Modular assembly system

ABSTRACT

A modular assembly toy system includes assembly modules each including at least one connection interface and one or more connectors each configured to mechanically and electrically connect two of the assembly modules via the respective connection interfaces. The assembly modules include a control module and an analyzing module. The control module includes a control module communication unit configured to obtain a set of host instructions from one or more hosts and a control module processor configured to generate a set of operation instructions for control each assembly module based on at least the set of host instructions. The analyzing module includes an analyzing module sensor configured to obtain a sensor signal, an analyzing module processor configured to analyze the sensor signal to generate a first analyzing result, and an analyzing module communication unit configured to transmit the sensor signal or the first analyzing result to at least one of the hosts.

CROSS REFERENCE TO RELATED APPLICATION

This application is continuation of U.S. application Ser. No.15/601,664, filed on May 22, 2017, entitled “Connection Structures ofModular Assembly System,” which is continuation of InternationalApplication No. PCT/CN2016/104824, filed on Nov. 7, 2016, entitled“Modular Assembly System,” claims priority to Chinese Application No.CN201620271418.0, filed on Mar. 31, 2016, all of which are herebyincorporated by reference in their entireties.

BACKGROUND

The disclosure relates generally to robotic systems, and moreparticularly, to modular assembly robotic toys.

Robotic toys are cutting-edge products for childhood education becausethey can keep children engaged, educated, and entertained. Unlike avirtual character that resides only on a display screen, a robotic toycan be held in a child's arm or touched and thus, provides a visceralexperience. Today, one focus is to explore how more sophisticatedrobotic systems could be used in educational settings. For example, theterm “educational robotics” refers to the teaching practice during whichthe students use the robots to construct knowledge with the help of orfor the robots themselves.

While there is much potential for such systems, known robotic systems astoys have encountered issues such as difficulty of assembling, limitedfunctions, and lack of flexibility and extensibility, especially whenthe users are young children.

SUMMARY

The disclosure relates generally to robotic systems, and moreparticularly, to modular assembly robotic toys.

In one example, a system includes a plurality of assembly modules andone or more connectors. Each assembly module includes at least oneconnection interface. Each connector is configured to mechanically andelectrically connect two of the plurality of assembly modules via therespective connection interfaces of the two assembly modules. Theplurality of assembly modules include at least a control module and ananalyzing module. The control module includes a control modulecommunication unit configured to obtain a set of host instructions fromone or more hosts and a control module processor configured to generatea set of operation instructions for control each assembly module basedon at least the set of host instructions. The analyzing module includesan analyzing module sensor configured to obtain a sensor signal, ananalyzing module processor configured to analyze the sensor signal togenerate a first analyzing result, and an analyzing module communicationunit configured to transmit the sensor signal or the first analyzingresult to at least one of the one or more hosts.

In another example, an assembly module includes at least one connectioninterface, a sensor, a processor, and a communication unit. Eachconnection interface is configured to mechanically and electricallyconnect to a connector and receive at least a power signal via theconnector. The sensor is configured to obtain a sensor signal. Theprocessor is operatively coupled to the sensor and the at least oneconnection interface and configured to analyze the sensor signal togenerate an analyzing result. The communication unit is operativelycoupled to the processor and configured to transmit the sensor signal orthe analyzing result to a host.

In still another example, a system includes a plurality of assemblymodules and one or more connectors. At least one of the assembly modulesincludes at least one connection interface. Each connector is configuredto mechanically and electrically connect two of the plurality ofassembly modules via the connection interface of one of the two assemblymodules. The plurality of assembly modules include at least a controlmodule and an actuation module. The control module includes acommunication unit configured to obtain a set of host instructions fromone or more hosts and a processor configured to generate a set ofoperation instructions for each assembly module based on at least theset of host instructions. The actuation module includes a set ofpropellers and a motor configured to drive the set of propellers basedon at least the set of operation instructions for the actuation modulegenerated by the processor.

In yet another example, a system includes a plurality of assemblymodules and one or more connectors. Each assembly module includes atleast one connection interface. Each connector is configured tomechanically and electrically connect two of the plurality of assemblymodules via the respective connection interfaces of the two assemblymodules. Each connector includes two open ends adapted to fitting intothe connection interfaces of the two assembly modules, respectively. Theplurality of assembly modules include at least a control module. Thecontrol module includes a communication unit configured to obtain a setof host instructions from one or more hosts and a processor configuredto generate a set of operation instructions for each assembly modulebased on at least the set of host instructions.

In a different example, a connection structure includes two connectioninterfaces and a connector. Each connection interface includes aplurality of planar contacts arranged at a center and one or moreconcentric rings on a circuit board and a plurality of first lockmechanisms arranged on a first casing. The connector includes a secondcasing including two open ends and a plurality of second lock mechanismsarranged on the second casing and a plurality of pins. Each pin includestwo ends each exposed by one of the two open ends of the second casing,respectively. When the connector is plugged into the two connectioninterfaces at a plurality of orientations relative to one another, theplurality of pins of the connector are in contact with the plurality ofplanar contacts of each connection interface so that the two connectioninterfaces are electrically connected, and the plurality of second lockmechanisms of the connector are interlocked with the plurality of firstlock mechanisms of each connection interface so that the two connectioninterfaces are mechanically connected.

In another example, a connection structure includes two connectioninterfaces and a connector. Each connection interface includes aplurality of contacts arranged on a circuit board and a plurality offirst lock mechanisms arranged on a first casing. The connectionincludes a second casing including two open ends and a plurality ofsecond lock mechanisms arranged on the second casing and a plurality ofconcentric ring contacts. Each concentric ring contact includes two endseach exposed by one of the two open ends of the second casing,respectively. When the connector is plugged into the two connectioninterfaces at a plurality of orientations relative to one another, theplurality of concentric ring contacts of the connector are in contactwith the plurality of contacts of each connection interface so that thetwo connection interfaces are electrically connected, and the pluralityof second lock mechanisms of the connector are interlocked with theplurality of first lock mechanisms of each connection interface so thatthe two connection interfaces are mechanically connected.

In a different example, a method for registering one of a plurality ofassembly modules operatively coupled to one another in a modularassembly system is provided. A first message including a firstidentifier of the assembly module is received from one of the pluralityof assembly modules. A second message including a second identifier forthe assembly module is transmitted to the assembly module. The secondidentifier is generated based on at least the first identifier. A thirdmessage including the second identifier is received from the assemblymodule. In response to determining that the third message is received,the assembly module is registered as a new assembly module of themodular assembly system. At least one of the receiving, transmitting,determining, and registering is performed by a control module of theplurality of assembly modules.

In another example, a method for updating a status associated with oneof a plurality of assembly modules operatively coupled to one another ina modular assembly system is provided. A first message for requestingdata from the assembly module is transmitted to one of the plurality ofassembly modules. A second message including the requested data or athird message including a normal status indicator is received from theassembly module. In response to determining that the second message orthe third message is received, a status associated with the assemblymodule is updated as being coupled to the modular assembly system. Atleast one of the transmitting, determining, and updating is performed bya control module of the plurality of assembly modules.

In a different example, a method for updating firmware on a controlmodule of a modular assembly system is provided. Information related tonoise sampled from the control module is obtained. A first encryptionkey is calculated based on the information. Firmware to be updated onthe control module is received from a host of the modular assemblysystem. The firmware is encrypted based on at least a second encryptionkey. In response to determining that the received firmware can bedecrypted, the decrypted firmware is loaded into the control module. Atleast one of the obtaining, calculating, receiving, determining, andloading is performed by the control module.

In another example, a method for encrypting firmware to be updated on acontrol module of a modular assembly system is provided. An encryptionkey calculated based on information related to noise sampled from thecontrol module is received. Firmware is encrypted based on at least theencryption key. The encrypted firmware is transmitted to the controlmodule. At least one of the receiving, encrypting, and transmitting isperformed by a host of the modular assembly system.

In a different example, a method for providing host instructions to acontrol module of a modular assembly system comprising a plurality ofassembly modules is provided. A graphical programming environmentincluding a set of first graphical representations and a set of secondgraphical representations is presented to a user. Each first graphicalrepresentation corresponds to a statement block comprising at least oneparameter. Each second graphical representation corresponds to one ofthe plurality of assembly modules associated with at least one property.A user is facilitated to select at least one of the first graphicalrepresentations and provide values to the at least one parameter of eachselected first graphical representation. The user is facilitated toprovide values to the at least one property of one or more of the secondgraphical representations. Based on at least the selected first andsecond graphical representations and the provided values thereof, a setof host instructions are generated. The set of host instructions aretransmitted to the control module for controlling operation of theplurality of assembly modules. At least one of the presenting,facilitating, facilitating, generating, and transmitting is performed bya host of the modular assembly system.

In another example, a method for providing host instructions to acontrol module of a modular assembly system comprising a plurality ofassembly modules is provided. A graphical user interface (GUI) includinga first set of GUI elements and a second set of GUI elements ispresented to a user. The first set of GUI elements allow the user tointeractively control operation of the modular assembly system atruntime when the modular assembly system is on operation. The second setof GUI elements allow the user to designate a function corresponding tothe modular assembly system. The user is facilitated to select one ofthe first and second sets of GUI elements. In response to the userselecting the first set of GUI elements, a first set of hostinstructions are dynamically generated based on at least the user'sinteractions with the first set of GUI elements for controlling theoperation of the modular assembly system at runtime, and the generatedfirst set of host instructions are transmitted to the control module ofthe modular assembly system at runtime when the modular assembly systemis on operation. In response to the user selecting the second set of GUIelements, a second set of host instructions are obtained based on atleast the function designated by the user, and the obtained second setof host instructions are transmitted to the control module of themodular assembly system prior to the modular assembly system performsthe function designated by the user. At least one of the presenting,facilitating, generating, transmitting, obtaining, and transmitting isperformed by a host of the modular assembly system.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments will be more readily understood in view of the followingdescription when accompanied by the below figures and wherein likereference numerals represent like elements, wherein:

FIGS. 1A-1C are perspective views of an example of a modular assemblyrobotic toy including multiple assembly modules and connectors inaccordance with an embodiment;

FIG. 2 is a block diagram illustrating a system including assemblymodules, hosts, and a server in accordance with an embodiment;

FIG. 3 is a depiction of various examples of assembly modules inaccordance with an embodiment;

FIG. 4 is a schematic diagram illustrating an example of a busconnecting multiple assembly modules in accordance with an embodiment;

FIG. 5 is a depiction of an example of transmission of host instructionsfrom hosts to a control module in accordance with an embodiment;

FIG. 6 is a block diagram illustrating an example of an assembly modulein accordance with an embodiment;

FIG. 7 is a block diagram illustrating an example of a control module inaccordance with an embodiment;

FIG. 8 is a block diagram illustrating an example of an analyzing modulein accordance with an embodiment;

FIG. 9 is a block diagram illustrating an example of a sensor module inaccordance with an embodiment;

FIG. 10 is a block diagram illustrating an example of an actuator modulein accordance with an embodiment;

FIG. 11 is a block diagram illustrating an example of a power module inaccordance with an embodiment;

FIG. 12 is a block diagram illustrating an example of hosts and a serverin accordance with an embodiment;

FIG. 13 is a perspective view of an example of a modular assemblyunmanned aerial vehicle (UAV) robotic toy including multiple assemblymodules and connectors in accordance with an embodiment;

FIG. 14A-14B are perspective views of an example of a connectionstructure in accordance with an embodiment;

FIG. 15 is an exploded view of an example of a connection structure inaccordance with an embodiment;

FIG. 16A is a perspective view of an example of a connector inaccordance with an embodiment;

FIG. 16B is a perspective view of an example of a pin of the connectorin FIG. 17A in accordance with an embodiment;

FIG. 17 is a plan view of an example of a circuit board of a connectioninterface in accordance with an embodiment;

FIG. 18 is a plan view of an example of a connection interface inaccordance with an embodiment;

FIG. 19 is a cross-sectional view of an example of a connectionstructure in accordance with an embodiment;

FIGS. 20A-20D are plan views of the connection interface in FIG. 19 incontact with pins of a connector at four orientations with 90 degreesoffset, respectively, in accordance with an embodiment;

FIG. 21A-21B are perspective views of various examples of a circuitboard having ring contacts thereon in accordance with an embodiment;

FIG. 22A is a perspective view of another example of a connector inaccordance with an embodiment;

FIG. 22B is a cross-sectional view of the connector in FIG. 22A inaccordance with an embodiment;

FIG. 22C is a perspective view of contacts of the connector in FIG. 22Ain accordance with an embodiment;

FIG. 23 is a plan view of another example of a connection interface inaccordance with an embodiment;

FIG. 24A is a plan view of another example of a circuit board of theconnection interface in FIG. 23 in accordance with an embodiment;

FIG. 24B-24D are cross-sectional views of another example of aconnection structure including the connector in FIG. 22A in contact withthe connection interface in FIG. 23 in accordance with an embodiment;

FIG. 25 is a depiction of an example of communication between a controlmodule and multiple assembly modules and hosts in accordance with anembodiment;

FIG. 26 is an event diagram illustrating an example of a method forregistering an assembly module in accordance with an embodiment;

FIG. 27 is a flow chart illustrating an example of a method forregistering an assembly module in accordance with an embodiment;

FIG. 28 is a flow chart illustrating another example of a method forregistering an assembly module in accordance with an embodiment;

FIG. 29 is an event diagram illustrating an example of a method forupdating a status associated with an assembly module in accordance withan embodiment;

FIG. 30 is an event diagram illustrating another example of a method forupdating a status associated with an assembly module in accordance withan embodiment;

FIG. 31 is a flow chart illustrating an example of a method for updatinga status associated with an assembly module in accordance with anembodiment;

FIG. 32 is a flow chart illustrating another example of a method forupdating a status associated with an assembly module in accordance withan embodiment;

FIG. 33 is an event diagram illustrating an example of a method forupdating firmware on a control module in accordance with an embodiment;

FIG. 34 is a flow chart illustrating an example of a method for updatingfirmware on a control module in accordance with an embodiment;

FIG. 35 is a flow chart illustrating another example of a method forupdating firmware on a control module in accordance with an embodiment;

FIG. 36 is a block diagram illustrating an example of applicationsrunning on hosts in accordance with an embodiment;

FIGS. 37A-37B are screenshots of an example of a control application inaccordance with an embodiment;

FIG. 38 is a screenshot of another example of a control application inaccordance with an embodiment;

FIG. 39 is a flow chart illustrating an example of a method forproviding host instructions to a control module in accordance with anembodiment;

FIGS. 40A-40B are screenshots of an example of a programming applicationin accordance with an embodiment;

FIG. 41 is a screenshot of an example of a program including graphicalstatement blocks in accordance with an embodiment;

FIG. 42 is a flow chart illustrating another example of a method forproviding host instructions to a control module in accordance with anembodiment; and

FIG. 43 is a block diagram illustrating an example of a computer systemuseful for implementing various embodiments set forth in the disclosure.

DETAILED DESCRIPTION

In the following detailed description, numerous specific details are setforth by way of examples in order to provide a thorough understanding ofthe relevant disclosures. However, it should be apparent to thoseskilled in the art that the present disclosure may be practiced withoutsuch details. In other instances, well known methods, procedures,systems, components, and/or circuitry have been described at arelatively high-level, without detail, in order to avoid unnecessarilyobscuring aspects of the present disclosure.

Throughout the specification and claims, terms may have nuanced meaningssuggested or implied in context beyond an explicitly stated meaning.Likewise, the phrase “in one embodiment/example” as used herein does notnecessarily refer to the same embodiment and the phrase “in anotherembodiment/example” as used herein does not necessarily refer to adifferent embodiment. It is intended, for example, that claimed subjectmatter include combinations of example embodiments in whole or in part.

In general, terminology may be understood at least in part from usage incontext. For example, terms, such as “and”, “or”, or “and/or,” as usedherein may include a variety of meanings that may depend at least inpart upon the context in which such terms are used. Typically, “or” ifused to associate a list, such as A, B or C, is intended to mean A, B,and C, here used in the inclusive sense, as well as A, B or C, here usedin the exclusive sense. In addition, the term “one or more” as usedherein, depending at least in part upon context, may be used to describeany feature, structure, or characteristic in a singular sense or may beused to describe combinations of features, structures or characteristicsin a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again,may be understood to convey a singular usage or to convey a pluralusage, depending at least in part upon context. In addition, the term“based on” may be understood as not necessarily intended to convey anexclusive set of factors and may, instead, allow for existence ofadditional factors not necessarily expressly described, again, dependingat least in part on context.

As will be disclosed in detail below, among other novel features, themodular assembly systems disclosed herein provide the ability to easilyassemble a wide variety of robotic toys from different assembly moduleswithout any assembly tools. In some embodiments, connectors can be usedto both mechanically and electrically connect any assembly modules viatheir respective connection interfaces, thereby providing flexibilityand extensibility to achieve different structures, forms, and functionsof robotic toys by users. In some embodiments, assembly modules mayinclude “smart” modules that can independently perform certain sensingand analysis functions and communicate the sensing and/or analysisresults directly with remote hosts and/or servers. In some embodiments,detection mechanisms may be used to efficiently and effectively achieveassembly module registration and status updates (e.g., online andoffline) without the need for physical module configuration or userintervention. In some embodiments, the functions of an assembly modulemay be further extended by downloading updated firmware using secureupdate mechanisms.

The modular assembly systems disclosed herein also provide the abilityto facilitate users to easily program any assembled robotic toys viagraphical interfaces of various software applications so as to customizethe behaviors and functions of the assembled robotic toys as desired. Insome embodiments, a graphical programming environment can be used byusers, for example, young children, to input programs that can bedownloaded to the assembled robotic toys. In some embodiments, a runtimecontrol environment may be provided on a portable device so that userscan intuitively and interactively control the actions of the assembledrobotic toys in real-time.

Additional novel features will be set forth in part in the descriptionwhich follows, and in part will become apparent to those skilled in theart upon examination of the following and the accompanying drawings ormay be learned by production or operation of the examples. The novelfeatures of the present disclosure may be realized and attained bypractice or use of various aspects of the methodologies,instrumentalities, and combinations set forth in the detailed examplesdiscussed below.

Modular Assembly System

FIGS. 1A-1C are perspective views of an example of a modular assemblyrobotic toy 100 including multiple assembly modules 102, 104, 106, and108 and connectors 110 in accordance with an embodiment. In FIG. 1A, acontrol module 102 is connected to a power module 104 by a connector110. Power module 104 and the rest of assembly modules—two wheel modules106-1 and 106-2 and two connector modules 108-1 and 108-2 are to beconnected by connectors 110-1, 110-2, 110-3, and 110-4. In thisembodiment, all connectors 110 are the same and interchangeable. Anyconnector 110 can be used to mechanically and electrically connect anytwo assembly modules 102, 104, 106, and 108 via their respectiveconnection interfaces, which are the same as well. In this embodiment,each of power module 104 and connector modules 108-1 and 108-2 includesmultiple connection interfaces and thus, can connect to multipleassembly modules 102, 104, 106, and 108. Thus, power module 104 andconnector modules 108-1 and 108-2 may serve as a “hub” to provide theflexibility and extensibility of connecting multiple assembly modulestogether. For example, connector module 108-1 can connect to powermodule 104 and two wheel modules 106-1 and 106-2. On the other hand,some assembly modules, such as control module 102 and wheel modules106-1 and 106-2, each includes a single connection interface and thus,may be arranged at the “end” of modular assembly robotic toy 100.

As will be described below in detail, control module 102 may work as the“brain” of modular assembly robotic toy 100 to control operations ofeach assembly module of modular assembly robotic toy 100 bycommunicating data signals, e.g., operation instructions, with eachassembly module via connectors 110. Power module 104 may provide“energy” to modular assembly robotic toy 100, for example, bytransmitting power signals from a battery pack to each assembly modulevia connectors 110. Wheel modules 106, as one example of actuatormodules, may work as the “feet” of modular assembly robotic toy 100 byrotating themselves along the axis of rotation. In this embodiment, eachassembly module is substantially ball-shaped. For example, because ofthe ball shape, wheel modules 106 can move without additionalstructures, i.e., can rotate themselves along the axis of rotation.Also, because of the ball shape, multiple connection interfaces can bearranged symmetrically along any diameters of connector module 108 sothat connector module 108 can be arranged at various orientations inmodular assembly robotic toy 100, which further improves the flexibilityand extensibility of modular assembly robotic toy 100. Connectors 110may serve as the “bones” and “nerves” of modular assembly robotic toy100 to provide both mechanical and electrical connections betweenassembly modules. For example, each connector 110 includes two open endsadapted to fitting into the connection interfaces of any two assemblymodules, respectively.

FIG. 1B illustrates that the assembly modules described with respect toFIG. 1A have been assembled together. The assembled structure can movearound by wheel modules 106, which are controlled by control module 102and powered-up by power module 104. FIG. 1B further illustrates thatmodular assembly robotic toy 100 can change its structure and form andextend its functions by connecting more assembly modules, e.g., aninfrared sensor module 112 via connector 110-5 and a follower 114. Inthis embodiment, infrared sensor module 112 can be plugged into modularassembly robotic toy 100 by connecting to a spare connection interfaceof connector module 108-2 via connector 110-5. Follower 114, as oneexample of accessories, may be directly connected to another spareconnection interface of connector module 108-2 without any connector.

As will be described below in detail, infrared sensor module 112, as oneexample of sensor modules, may work as the “eyes” of modular assemblyrobotic toy 100 to detect any objects by infrared beams. The sensorsignals obtained by infrared sensor module 112 may be transmitted tocontrol module 102 via connectors 110. Infrared sensor module 112 may besubstantially ball-shaped as well. In this embodiment, follower 114 mayhelp supporting and balancing modular assembly robotic toy 100 andfollow the movement of wheel modules 106.

FIG. 1C illustrates that the assembly modules described with respect toFIG. 1B have been assembled together to build modular assembly robotictoy 100. Modular assembly robotic toy 100 can move around by wheelmodules 106 and follower 114, which are controlled by control module 102and powered-up by power module 104. Modular assembly robotic toy 100 canalso detect objects along the moving path by infrared sensor module 112.In some embodiments, control module 102 may adjust the moving path toavoid any objects detected by infrared sensor module 112 and control themovement of wheel modules 106 according to the adjusted moving path inreal-time. As will be described below in detail, the detection andmovement operations of modular assembly robotic toy 100 may becontrolled by control module 102 in accordance with host instructionsreceived from host(s) either in the form of programming instructionsdownloaded prior to the operation of modular assembly robotic toy 100 orin the form of control instructions received at runtime. That is,modular assembly robotic toy 100 can be customized by assembling anumber of assembly modules with different functions using the sameconnectors 110 and by programming the assembled structure throughpredefined programs and/or real-time control. It is to be appreciatedthat modular assembly robotic toy 100 illustrated in FIGS. 1A-1C is forthe illustrative purpose only. As a modular assembly system, robotictoys with different structures, forms, and functions may be easilyassembled and programmed in other examples as will be described below indetail.

FIG. 2 is a block diagram illustrating a system 200 including assemblymodules 202, hosts 204, and a server 206 in accordance with anembodiment. System 200 in this embodiment provides hardware, firmware,software, and service supports for assembling, testing, and maintainingmodular assembly robotic toys with different structures, forms, andfunctions. Assembly modules 202 include a number of assembly modules202-1, 202-2, 202-3, . . . , 202-n of different types. For example, FIG.3 is a depiction of various examples of assembly modules 202 inaccordance with an embodiment, which include control modules 302 (e.g.,control module 102 in FIGS. 1A-1C), sensor modules 304, actuator modules306, analyzing modules 308 (a.k.a. “smart” modules), power modules 310(e.g., power module 104 in FIGS. 1A-1C), and connector modules 312(e.g., connector module 108 in FIGS. 1A-1C). It is to be appreciatedthat any other types of assembly modules may be included in otherexamples.

In this embodiment, sensor modules 304 may include sub-types, such asinfrared sensor modules 314 (e.g., infrared sensor module 112 in FIGS.1A-1C), color recognition modules 316, and any other sensor modules thatcan obtain sensor signals from one or more sensors of any types.Actuator modules 306 may include sub-types as well, for example,movement modules 318 (e.g., wheel module 106 in FIGS. 1A-1C), flightactuation modules 320, joint modules 322, and any other actuator modulesthat can apply energy for physical operation by one or more actuators ofany types. Analyzing modules 308 may also include sub-types, includingvoice recognition modules 324, image recognition modules 326, and anyother analyzing modules that can independently obtain and analyze sensorsignals and transmit the sensor signals or the analyzing result to hosts204 and/or server 206. It is to be appreciated that in some embodiments,the same assembly module (e.g., in the sense of having the samehardware) may become different types of assembly modules by downloadingdifferent types of firmware. For example, voice recognition module 324and image recognition module 326 may be formed by downloading differenttypes of firmware to the same physical module. In some embodiments, onetype of assembly module may become another type of assembly module byconnecting to accessories. For example, movement module 318 may connectto a set of propellers to become flight actuation module 320 or a wateractuation module (not shown).

As shown in FIG. 3, different types of assembly modules 202 may beconnected to control modules 302 through connector modules 312. It is tobe appreciated that any two assembly modules 202, either in the sametype or different types, may be connected one another without connectormodule 312, e.g., be connected directly via connectors as describedabove with respect to FIGS. 1A-1C. It is also to be appreciated thatconnector modules 312 do not have to be connected to control modules 302and can be connected to any types of assembly modules 202. In someembodiments, connector modules 312 may be viewed as a “hub” to provide anumber of connection interfaces so that more assembly modules 202 can beassembled together. Regardless of the specific type, each assemblymodule 202 includes at least one connection interface through whichassembly module 202 can be plugged to a modular assembly robotic toy bya connector. In some embodiments, connection interfaces of any assemblymodules 202 are all the same, i.e., are standard connection interfaces,so that the same connectors can be used to connect any two assemblymodules 202. As described above, in some embodiments, each assemblymodule 202 is substantially ball-shaped. The detail of each assemblymodule 202 will be described below with respect to FIGS. 6-11S.

Referring back to FIG. 2, in this embodiment, hosts 204 may includemultiple hosts 204-1 and 204-2, each of which may be any suitabledevice, for example, a mobile or portable device (e.g., dumb or smartphone, tablet, etc.), laptop computer, desktop computer, netbookcomputer, media center, wearable device (e.g., eyeglasses, wrist watch,etc.), virtual reality (VR) or augmented reality (AR) device (e.g., VRheadset, etc.), automobile control station, gaming console, televisionset, set-top box, global positioning system (GPS), printer, or any othersuitable device. Hosts 204 may communicate with some of assembly modules202, e.g., control modules 302 and analyzing modules 308, via anysuitable communication approaches, such as wired communication, e.g.,universal serial bus (USB), IEEE 1394, Thunderbolt, etc., or wirelesscommunication, e.g., WiFi, Bluetooth, ZigBee, near-field communication(NFC), etc., to name a few. Hosts 204 may also communicate with server206 via the Internet 208. In some embodiments, Hosts 204 may communicatewith server 206 via any other networks, such as a local area network(LAN), a personal area network (PAN), etc.

In this embodiment, applications may run on hosts 204 to allow hosts 204to configure, control, and manage any modular assembly robotic toysassembled from assembly modules 202. In one example, programmingapplications running on hosts 204 may facilitate users to build programsor select existing demo programs and download the programs into controlmodule 302. In another example, control applications running on hosts204 may allow users to real-time control the operations of modularassembly robotic toys by transmitting control instructions to controlmodule 302 at runtime. In still another example, hosts 204 may obtainupdated firmware, for example, from server 206, encrypt the firmware,and manage the downloading of the encrypted firmware to control module302. In yet another example, hosts 204 may receive and handle data frommodular assembly robotic toys, e.g., from control module 302 oranalyzing module 308. For example, status (e.g., registration oronline/offline status) of each assembly module 202 may be displayed onhosts 204 based on status messages received from control module 302;sensor signals and/or analyzing results of the sensors signals may bereceived from control module 302 and/or analyzing modules 308 andprocessed by hosts 204 or forwarded to server 206 for furtherprocessing. In this embodiment, multiple hosts 204 may be used todistribute the tasks. For example, host 204-2 may be a laptop or desktopcomputer on which the programming application and firmware updateapplication run. Host 204-2 may be connected to control module 302 viaUSB to transmit programming instructions or updated firmware to controlmodule 302 prior to the operation of the modular assembly robotic toy.Host 204-1 may be a mobile or portable device on which the controlapplication runs. Host 204-1 may be connected to control module 302 viaBluetooth to transmit real-time control instructions and connected toanalyzing modules 308 via WiFi to receive sensor signals and/oranalyzing results from analyzing modules 308 at runtime.

In this embodiment, server 206 may run on the backend of system 200 toprovide various services to system 200 via different applicationsrunning thereon. For example, an artificial intelligence application maybe used by server 206 to analyze any sensor signals or analyzing resultsobtained from analyzing module 308 (e.g., being forwarded by hosts 204)to performance tasks such as voice recognition or image recognition. Inanother example, a user management application may be used by server 206to manage users' information and store usage data related to the modularassembly robotic toys. In still another example, a firmware managementapplication may be used by server 206 to store and manage firmwareupdate data. As described above, server 206 may communicate with hosts204 via the Internet 208 or any other networks to provide the servicesdescribed above. It is to be appreciated that in some embodiments,server 206 may communicate with some assembly modules 202 directly,e.g., analyzing modules 308 for receiving the sensor signals and/oranalyzing results.

FIG. 4 is a schematic diagram illustrating an example of a bus 400connecting multiple assembly modules 202 in accordance with anembodiment. In this embodiment, upon a number of assembly modules 202being mechanically and electrically connected one another via connectorsto form a modular assembly robotic toy, bus 400 is formed fortransmitting power signals and data signals between assembly modules202. As shown in FIG. 4, bus 400 may include two power lines—powersupply (VCC) 402 and ground (GND) 404 for transmitting the powersignals, e.g., a voltage between VCC 402 and GND 404. Bus 400 may alsoinclude two data lines—Data-H 406 and Data-L 408 for transmitting thedata signals, for example, differential data signals. Each assemblymodule 202 may be electrically connected to bus 400 in parallel. Forexample, each connection interface (I/F) 410 of assembly module 202 mayinclude four contacts, each of which can electrically connect to one ofthe four lines of bus 400. For some assembly modules 202-1 and 202-2that include a single connection interface 410-1 and 410-2, e.g.,control modules 302, sensor modules 304, or actuator modules 306,assembly modules 202-1 and 202-2 are electrically connected to bus 400via single connection interface 410-1 and 410-2, respectively. For someassembly modules 202-3 and 202-4 that include multiple connectioninterfaces 410-3, 410-4, 410-5, and 410-6, e.g., power modules 310 orconnector modules 312, each connection interface 410-3, 410-4, 410-5,and 410-6 of assembly modules 202-3 and 202-4 is individually andseparately electrically connected to bus 400. As described above, powersignals may be transmitted from power module 310 to each assembly module202 via VCC 402 and GND 404 power lines of bus 400. Data signals mayinclude operation instructions transmitted from control module 302 toeach assembly module 202 and module data (e.g., sensor signals or statusinformation) transmitted from each assembly module 202 to control module302 via Data-H 406 and Data-L 408 data lines of bus 400.

In this embodiment, bus 400 may be a controlled area network (CAN) busadopted by the International Organization of Standardization (ISO), forexample, in ISO11898 and ISO11519 standards. According to the CAN busstandards, Data-H 406 and Data-L 408 may be CAN-H and CAN-L data lines,which transmit data signals by voltage differential therebetween. Powersignals may be transmitted via VCC 402 and GND 404 according to the CANbus standards as well. Data transmission and identifier (ID) allocationprotocols applied by bus 400 may follow the CAN bus standards ingeneral. It is to be appreciated that bus 400 is not limited to CAN busand can be any suitable bus for transmitting power and data signalsbetween assembly modules 202 that are electrically connected inparallel, such as but not limited to, USB, RS-485 bus, serial ATA (SATA)bus, low-voltage differential signaling (LVDS) bus, etc.

FIG. 5 is a depiction of an example of transmission of host instructionsfrom hosts 204 to control module 302 in accordance with an embodiment.In this embodiment, control module 302 includes one or more processors502 on which an operating system 504 can be implemented. Operatingsystem 504 may be any suitable operating system such as embeddedoperating systems or real-time operating systems (RTOS), e.g., embeddedLinux, iOS, NetBSD, Inferno, OpenWrt, Windows Embedded, etc. In thisembodiment, a virtual machine 506 may run on operating system 504, suchas Java virtual machine (JVM), Android Runtime (ART), Lua virtualmachine, to name a few. Virtual machine 506 can provide the ability toexecute programming instructions 508 in a platform-independentenvironment.

In this embodiment, a programming application may run on host 204-2.Programming instructions 508 generated by the programming application,either via an integrated programming environment (IDE) or by manualediting on host 204-2, may be transmitted from host 204-2 to virtualmachine 506 of control module 302 directly. For example, programminginstructions 508 may be Lua scripts. In addition to programminginstructions 508, host instructions in this embodiment may also includecontrol instructions 510 that are generated by a control applicationrunning on host 204-1 at runtime. Control instructions 510 may betransmitted from host 204-1 to operating system 504 directly, e.g.,using Bluetooth low energy (BLE, a.k.a. Bluetooth Smart) technologies.In this embodiment, when virtual machine 506 is not executing anyprogramming instructions 508 received from host 204-2, operating system504 may generate operation instructions to control operations ofcorresponding assembly modules 202 based on control instructions 510received from host 204-1 at runtime. When virtual machine 506 isexecuting programming instructions 508, e.g., Lua scripts, operatingsystem 504 may handle control instructions 510 and control privilege tovirtual machine 506. In this case, operating system 504 may work as aninterface between virtual machine 506 and any other parts of the modularassembly robotic toy, e.g., assembly modules 202 and hosts 204, whilevirtual machine 506 is taking control of executing programminginstructions 508 and control instructions 510.

FIG. 6 is a block diagram illustrating an example of an assembly module202 in accordance with an embodiment. In this embodiment, assemblymodule 202 includes a processor 602, a memory 604, one or moreconnection interfaces 606, one or more sensors 608, one or moreactuators 610, a communication unit 612, input/output (I/O) 614, and apersistent storage 616. As shown in FIG. 6, processor 602 may beoperatively coupled to memory 604, connection interfaces 606, sensors608, actuators 610, communication unit 612, I/O 614, and persistentstorage 616. Assembly module 202 may communicate with hosts 204 viacommunication unit 612 and communicate with any other assembly modules202 electrically connected to bus 400 via connection interfaces 606.

In this embodiment, processor 602 may include one or more processingunits such as microcontroller units (MCUs), microprocessors, graphicalprocessing units (GPUs), memory controllers, etc. Memory 604 may be anyprogram memory (e.g., RAM, flash) or read-only memory (ROM) that isintegrated with MCUs in a single integrated circuit or separate from theprocessing units. Processor 602 may control operations of each componentof assembly module 202 by executing instructions stored in memory 604.In this embodiment, each connection interface 606 may receive powersignals from bus 400 and transmit and receive data signals via bus 400in accordance with the instructions from processor 602. Processor 602may further receive data signals from connection interface 606 andtransmit data signals to bus 400 via connection interface 606. Powersignals may be transmitted via connection interface 606 to processor 602to supply power. In some embodiments, power signals may be transmittedvia connection interface 606 to other components of assembly module 202to supply power. In this embodiment, communication unit 612 may be anywired or wireless communication unit, such as USB, IEEE 1394,Thunderbolt, WiFi, Bluetooth, ZigBee, or NFC units that can communicatewith the corresponding types of communication units of hosts 204. Asdescribed above, host instructions transmitted from hosts 204 may bereceived by communication unit 612 and forwarded to processor 602. Insome embodiments, communication unit 612 may include a modem or anynetwork adaptors for communicating with server 206 via the Internet 208or any other networks as described above. Data received from server 206may be forwarded to processor 602 as well by communication unit 612.

In this embodiment, sensors 608 may include any types of sensors such aslight sensors, motion sensors, temperature sensors, sound sensors,electrical sensors, magnetic sensors, chemical sensors, biosensors, toname a few. Regardless of the specific type, sensors 608 can obtainsensor signals and transmit the sensor signals to processor 602.Processor 602 may either analyzes the sensor signals and then transmitsthe analyzing results to hosts 204 via bus 400 or transmits the rawsensor signals directly to hosts 204 via communication unit 612. In thisembodiment, actuators 610 may include any types of actuators, such ashydraulic actuators, pneumatic actuators, electric actuators, thermalactuators, magnetic actuators, mechanical actuators, to name a few.Regardless of the specific type, actuators 610 may perform physicalactions according to the instructions provided by processor 602 (andpower signals provided via bus 400 and connection interface 606 in somecases).

In this embodiment, I/O 614 may include any suitable I/O devices, suchas display screens, lights, keypads, buttons, etc. Users of a modularassembly robotic toy may interact with assembly module 202 directly viaI/O 614. For example, status information (e.g., power level, operatingstatus) of assembly module 202 or the entire modular assembly robotictoy may be presented via the display screen or the lights. Users mayinterrupt operation of assembly module 202 using the keypads or buttons.In this embodiment, persistent storage 616 may be any data storagedevice that retains data after assembly module 202 being powered-off,such as hard disk drivers and solid-state drivers (e.g., flash drivers).Data stored in persistent storage 616 may be communicated with memory604, such as programming instructions (e.g., source code or intermediatecodes of demo programs), operation logs, usage data backup, firmware,etc. It is to be appreciated that additional components may be includedin assembly module 202 as well in some embodiments. It is also to beappreciated that depending on the specific type of assembly module 202,certain components illustrated in FIG. 6 may not be necessary asdescribed below with respect to FIGS. 7-11.

FIG. 7 is a block diagram illustrating an example of a control module302 in accordance with an embodiment. Control module 302 in thisembodiment includes a processor 702, a memory 704, one or moreconnection interfaces 706, one or more sensors 708, a communication unit712, I/O 714, and a persistent storage 716. As shown in FIG. 7,processor 702 may be operatively coupled to memory 704, connectioninterfaces 706, sensors 708, communication unit 712, I/O 714, andpersistent storage 716. Each component in FIG. 7 may perform the samefunctions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional oralternative features of some components in control module 302 will bedescribed below in detail. For example, in some embodiments, persistentstorage 716 may store programming instructions (e.g., source code orintermediate codes of demo programs) and operation logs and usage databackup of not only control module 302, but also other assembly modules202 of the modular assembly robotic toy. In some embodiments, sensors708 may include inertial sensors, such as gyroscopes and accelerometers.

In addition to controlling operations of components in control module302, processor 702 of control module 302 may control operations of anyother assembly modules 202 of the modular assembly robotic toy. As shownin FIG. 7, host instructions may be provided by hosts 204 to processor702 via communication unit 712. As described above, programminginstructions may be received prior to control module 302 is on operationand then executed by virtual machine 506 running on operating system 504implemented on processor 702; control instructions, on the other hand,may be received at runtime when control module 302 is on operation andexecuted by operating system 504 directly. Based on the received hostinstructions, processor 702 may generate operation instructions forcontrolling each assembly module 202 via bus 400 and connectioninterface 706. Processor 702 may transmit operation instructions, asparts of data signals, to corresponding assembly modules 202 viaconnection interface 706 and bus 400. Moreover, processor 702 maycommunicate with assembly modules 202 via connection interface 706 andbus 400 to detect and configure any newly-added assembly modules. Insome embodiments, the updated firmware may be provided by server 206 tohosts 204 via the Internet and then downloaded to memory 704 and/orpersistent storage 716 via communication unit 712. On the other hand,module data (e.g., sensor signals or status information) received fromother assembly modules 202 or control module 302 itself may betransmitted by control module 302 to hosts 204 via communication unit712 as well. In some embodiments, communication unit 712 may communicatewith server 206 via the Internet or any other networks directly withoutpassing through hosts 204.

In this embodiment, I/O 714 may further include a physical switchconfigured to, in response to an input from a user, interrupt or resumethe obtaining of at least some of the host instructions from hosts 204or the generation of the operation instructions by processor 702. Inother words, execution of host instructions by processor 702 may bepartially controlled by physical operation of the user via controlmodule 302. For example, the physical switch may trigger processor 702to execute the host instructions, for example, programming instructions(e.g., Lua scripts) by virtual machine 506. In some embodiments, controlmodule 302 may further include a power switch for turning on and offcontrol module 302 and/or the modular assembly robotic toy. The powerswitch may be different from the physical switch described above, whichis used for controlling execution of host instructions by processor 702.

FIG. 8 is a block diagram illustrating an example of an analyzing module308 in accordance with an embodiment. Analyzing module 308 in thisembodiment includes a processor 802, a memory 804, one or moreconnection interfaces 806, one or more sensors 808, a communication unit812, and a persistent storage 816. As shown in FIG. 8, processor 802 maybe operatively coupled to memory 804, connection interfaces 806, sensors808, communication unit 812, and persistent storage 816. Each componentin FIG. 8 may perform the same functions of corresponding componentdescribed above with respect to FIG. 6 and will not be repeated again inthis embodiment. Additional or alternative features of some componentsin analyzing module 308 will be described below in detail. For example,in some embodiments, persistent storage 816 may further store sensorssignals obtained by sensors 808 and analyzing results of the signalsignals generated by processor 802.

In addition to controlling operations of components in analyzing module308, processor 802 of analyzing module 308 may be configured to analyzethe sensor signals obtained by sensors 808 to generate analyzingresults. In one example, analyzing module 308 may be voice recognitionmodule 324, and sensors 808 may include a microphone or any soundsensors configured to obtain a voice signal. Processor 802 then mayanalyze the voice signal to generate a voice recognition result byimplementing any suitable voice or speech recognition engines. Inanother example, analyzing module 308 may be image recognition module326, and sensors 808 may include a camera or any image sensorsconfigured to obtain an image signal. Processor 802 then may analyze theimage signal to generate an image recognition result by implementing anysuitable image or video recognition engines. In some embodiments, therecognition engines may be stored in persistent storage 816 and readinto memory 804 at runtime for analyzing the corresponding sensorsignals by processor 802. It is to be appreciated that analyzing module308 can be of other types by including suitable types of sensors 808 andimplementing suitable analyzing engines by processor 802.

In this embodiment, the sensor signals obtained by sensors 808 and/orthe analyzing results generated by processor 802 may be transmitted tohost 204 via communication unit 812 without passing through controlmodule 302. Host 204 after receiving the sensor signals or the analyzingresults, may further process the sensor signals or the analyzing resultsto generate further analyzing results because host 204 may have asuperior computation capability than analyzing module 308 for performingmore complex analysis. In some embodiments, host 204 may transmit thesensor signals or the analyzing results to server 206 via the Internet208 or any other networks so that more powerful processors and/oranalyzing engines on server 206 can perform even more complex analysisof the sensor signals or the analyzing results. In some embodiments,communication unit 812 may include a modem or any suitable networkadaptors for transmitting the sensor signals or the analyzing results toserver 206 directly without passing through host 204.

Based on the analyzing results from analyzing module 308, host 204,and/or server 206, host 204 may generate operation instructions andprovide the operation instructions to processor 802 via communicationunit 812. In some embodiments, the generated operation instructions maybe provided by host 204 to control module 302 as a part of hostinstructions, and control module 302 then may transmit the operationinstructions to analyzing module 308 or other assembly module 202 viabus 400. In one example, for voice recognition module 324, voicecommands from a user to control the operations of the modular assemblyrobotic toy may be recognized and understood by host 204 in conjunctionwith voice recognition module 324 and/or server 206 and applied tocorresponding assembly modules 202. In another example, for imagerecognition module 326, a target on the video taken by the camera ofimage recognition module 326 may be recognized and tracked by host 204in conjunction with image recognition module 326 and/or server 206 sothat host 204 can instruct corresponding actuator modules 306 to followthe moving path of the target and instruct image recognition module 326to keep tracking of the target.

In this embodiment, analyzing module 308 may be considered as a “smart”module because analyzing module 308 can independently perform sensorsignal analysis tasks and/or independently communicate the analyzingresults with host 204 or server 206 without the intervention of controlmodule 302. In some embodiments, analyzing module 308 may determinewhether to analyze the obtained sensor signals by processor 802 ortransmit the sensor signals to hosts 204 and/or server 206 for analysis.In one example, processor 802 may make the determination based on thecomplexity of the analysis tasks and perform relatively simple analysistasks and handle over the relatively complex analysis tasks to hosts 204and/or server 206. In another example, processor 802 may make thedetermination based on whether the communication unit 812 is capable ofcommunicating with hosts 204 and/or server 206. For example, if thecommunication connection is established, then the analysis tasks may behandled over to hosts 204 and/or server 206. Otherwise, analyzing module308 may perform the analysis tasks locally by processor 802. It is to beappreciated that pre-processing may be performed on the obtained rawsensor signals by processor 802 even when the analysis tasks are to beperformed by hosts 204 and/or server 206.

FIG. 9 is a block diagram illustrating an example of sensor module 304in accordance with an embodiment. Sensor module 304 in this embodimentincludes a processor 902, a memory 904, one or more connectioninterfaces 906, one or more sensors 908, and a persistent storage 916.As shown in FIG. 9, processor 902 may be operatively coupled to memory904, connection interfaces 906, sensors 908, and persistent storage 916.Each component in FIG. 9 may perform the same functions of correspondingcomponent described above with respect to FIG. 6 and will not berepeated again in this embodiment. Additional or alternative features ofsome components in sensor module 304 will be described below in detail.For example, in some embodiments, persistent storage 916 may furtherstore sensors signals obtained by sensors 908.

In one example, sensor module 304 may be infrared sensor module 314, andsensors 908 may include an infrared sensor. In some embodiments, theinfrared sensor may include an infrared transmitter configured to emit afirst infrared beam to an object and an infrared receiver configured toobtain a second infrared beam reflected from the object. Sensor signalsmay be obtained by infrared sensor module 314 based on the first and/orsecond infrared beams. In some embodiments, the infrared transmitter maybe a light emitting diode (LED) that can produce light in the infraredspectrum, and the infrared receiver can detect the presence, motion, orbrightness of the object based on the intensity of the second beam. Insome embodiments, the infrared sensor may be a passive infrared sensor(PIR) that measures infrared light radiating from objects in its fieldof view, which can be used for detecting the presence or motion of theobjects. In this embodiment, processor 902 may control operation of theinfrared sensor based on operation instructions received from controlmodule 302 via bus 400. For example, processor 902 may control theinfrared sensor to work in the active mode (reflection mode) or in thepassive mode. In the active mode, processor 902 may further control theinfrared sensor to repeatedly emit the infrared beam or emit a singleinfrared beam.

In another example, sensor module 304 may be a color recognition module316, and sensors 908 may include a light sensor configured to obtain alight signal from an object. The light sensor may be any suitable sensorthat can detect the current ambient light level (e.g., RGB level andlight intensity level), such as photoresistors, photodiodes, andphototransistors. Additional optical and electrical components may beincluded in the light sensor, such as color filters, input multiplexor,and light sources (e.g., RGB LEDs). In some embodiments, light signalsobtained by the light sensor may be provided to processor 902 todetermine the color of the object based on the light signals. In thisembodiment, processor 902 may also control operation of the light sensorbased on operation instructions received from control module 302 via bus400. For example, processor 902 may control the light sensor to work inthe ambient light intensity detection mode or in the R, G. or B colordetection mode. Processor 902 may further control the light sources torepeatedly emit a light beam in a desired color or emit a single lightbeam in a desired color.

In this embodiment, the sensor signals, e.g., infrared signals, ambientlight intensity signals, or RGB signals, may be formatted by processor902 according to the data transmission and ID allocation protocols ofbus 400 and packed into messages with IDs. The messages may betransmitted to control module 302 from processor 902 via bus 400. Insome embodiments, data related to sensor signals may be stored inpersistent storage 916 as backups. It is to be appreciated that sensormodule 304 can be of any other types by including suitable types ofsensors 908.

FIG. 10 is a block diagram illustrating an example of actuator module306 in accordance with an embodiment. Actuator module 306 in thisembodiment includes a processor 1002, a memory 1004, one or moreconnection interfaces 1006, one or more actuators 1010, and a persistentstorage 1016. As shown in FIG. 10, processor 1002 may be operativelycoupled to memory 1004, connection interfaces 1006, actuators 1008, andpersistent storage 1016. Each component in FIG. 10 may perform the samefunctions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional oralternative features of some components in actuator module 306 will bedescribed below in detail.

In one example, actuator module 306 may be movement module 318 that issubstantially ball-shaped, and actuators 1010 may include a motorconfigured to rotate the entirety of movement module 318. For example,movement module 318 may be wheel module 106 illustrated in FIGS. 1A-1C,which includes a track around a great circle of sphere to increase thefriction. The motor may be any electric motors, such as a servomotor,which can rotate the entirety of movement module 318 along an axis ofrotation. In some embodiments, additional accessories may be attached tomovement module 318, such as wheels or adaptors through which anyphysical structures can be plugged to the modular assembly robotic toyand rotate along with movement module 318. For example, in addition tomoving the modular assembly robotic toy itself, movement module 318 cancause any piece of toys that is attached thereto via suitable adaptorsto rotate as well. It is to be appreciated that the motor is not limitedto a rotary motor for driving the angular movement of movement module318. In some embodiments, the motor may be a linear motor for drivingthe linear movement of movement module 318. In this embodiment,processor 1002 may control operation of the motor based on operationinstructions received from control module 302 via bus 400. For example,processor 1002 may control the movement speed, direction, duration, andbreak of movement module 318.

In another example, actuator module 306 may be a flight actuation module320, and actuators 1010 may include a motor configured to drive a set ofpropellers. The motor may be any electric motors, such as a servomotor,which can rotate the set of propellers along an axis of rotation andthus, cause the modular assembly robotic toy to fly in the air. In thisembodiment, processor 1002 may control operation of the motor based onoperation instructions received from control module 302 via bus 400. Forexample, processor 1002 may control the flight speed, direction,altitude, pose, duration, and break of flight actuation module 320. Insome embodiments, sensors 708 of control module 302 may obtain sensorsignals indicative of attitude of the modular assembly robotic toy inthe air at runtime, and processor 702 of control module 302 may generateoperation instructions for flight actuation module 320 based on thesensor signals to adjust the flight attitude. It is to be appreciatedthat flight actuation module 320 may be turned into a water actuationmodule by driving a suitable set of propellers in the water.

In still another example, actuator module 306 may be a joint module 322,and actuators 1010 may include a steering gear configured to rotatejoint module 322 from 0 to 180 degrees in the radial direction (e.g., asa radial joint module) or rotate joint module 322 from −90 to +90degrees in the axial direction (e.g., as an axial joint module). In thisembodiment, processor 1002 may control operation of the steering gearbased on operation instructions received from control module 302 via bus400. For example, processor 1002 may control the rotation speed,direction, angle, duration, and break of joint module 322.

In this embodiment, the operation instructions for controlling actuators1010 may be formatted by processor 702 of control module 302 accordingto the data transmission and ID allocation protocols of bus 400 andpacked into messages with IDs. The messages may be transmitted fromcontrol module 302 to processor 1002 of actuator module 306 via bus 400.In some embodiments, data related to operation status of actuators 1010may be collected by processor 1002 and transmitted to control module 302in suitable message formats. It is to be appreciated that actuatormodule 306 can be of other types by including suitable types ofactuators 1010.

FIG. 11 is a block diagram illustrating an example of a power module 310in accordance with an embodiment. Power module 310 in this embodimentincludes a processor 1102, a memory 1104, one or more connectioninterfaces 1106, a persistent storage 1116, a battery 1118, and acharging interface 1120. As shown in FIG. 11, processor 1102 may beoperatively coupled to memory 1104, connection interfaces 1106,persistent storage 1116, and battery 1118. Each component in FIG. 11 mayperform the same functions of corresponding component described abovewith respect to FIG. 6 and will not be repeated again in thisembodiment. Additional or alternative features of some components inpower module 310 will be described below in detail. For example, in someembodiments, persistent storage 1116 may further store battery-relatedinformation, e.g., battery health, charging condition, remaininglifetime, etc.

In this embodiment, battery 1118 may be any suitable batteries,including primary batteries such as lithium, alkaline, zinc, ormagnesium batteries, and secondary (rechargeable batteries) such aslithium ion, NiCd, lead-acid, NiMH, NiZn, or AgZn batteries. In someembodiments, a number of batteries 1118 may form a battery pack. In thisembodiment, operation of battery 1118, such as charging/discharging andmaintenance, may be controlled by processor 1102 in conjunction with anysuitable battery management circuit (not shown) based on operationinstructions received from control module 302. The status of battery1118, e.g., battery health, charging condition, and remaining lifetime,may be monitored by processor 1102 in conjunction with any suitablebattery management circuit (not shown) as well. In some embodiments,power signals from battery 1118 may be provided to power module 310 andother assembly modules 202 via connection interface 1106 and bus 400.

In this embodiment, charging interface 1120 is operatively coupled tobattery 1118 and may be any suitable interface/connector for chargingbattery 1118, including wired charging interfaces, such as USB or DCjack, and wireless (induction) charging interfaces, such as MagneCharge, Qi, Rezence, or Power Matters Alliance (PMA). It is to beappreciated that in some embodiments, power module 310 may includeadditional or alternative power supplies, such as solar panels, AC-to-DCsupplies, AC adapters, and generators. In some embodiments, power module310 may further include a power switch for a user to turn on and off thepower of the modular assembly robotic toy and an indicator showing thecurrent charging status and/or remaining power level of battery 1118. Inthis embodiment, operation of battery 1118 may be controlled byprocessor 1102 based on operation instructions received from controlmodule 302 via bus 400.

FIG. 12 is a block diagram illustrating an example of hosts 204 and aserver 206 in accordance with an embodiment. In this embodiment, a user1202 of a modular assembly robotic toy may assemble the modular assemblyrobotic toy using a number of assembly modules 202 and customize thefunctions and behaviors of the modular assembly robotic toy using hosts204-1 and 204-2. In this embodiment, host 204-1 includes a processor1204-1, a memory 1206-1, communication units 1208-1 and 1210-1, and I/O1212-1. One or more applications, including a control application 1214,may be loaded into memory 1206-1 and executed by processor 1204-1. Aswill be described below in detail, a graphical user interface (GUI) ofcontrol application 1214 may be generated by processor 1204-1 andrendered on I/O 1212-1 (e.g., a display screen) for facilitating user1202 to interact with control application 1214 via I/O 1212-1. In someembodiments, control application 1214 may receive input from user 1202and generate a set of host instructions (e.g., control instructions)based on the user input at runtime when control module 302 is onoperation. The set of host instructions may be transmitted to controlmodule 302 via communication unit 1210-1. The user input may include,for example, a command received from the GUI rendered by host 204-1, amotion or gestured detected by one or more sensors on host 204-1, and avoice detected by a microphone on host 204-1. In other words, user 1202can control the modular assembly robotic toy using control application1214 through any suitable human-machine interfaces (HMIs).

Similarly, in this embodiment, host 204-2 includes a processor 1204-2, amemory 1206-2, communication units 1208-2 and 1210-2, and I/O 1212-2.Multiple applications, including a programming application 1216 and afirmware update application 1218, may be loaded into memory 1206-2 andexecuted by processor 1204-2. As will be described below in detail, aGUI of programming application 1216 may be generated by processor 1204-2and rendered on I/O 1212-2 (e.g., a display screen) for facilitatinguser 1202 to interact with programming application 1216 via I/O 1212-2.In some embodiments, programming application 1216 may receive inputsfrom user 1202 and generate a set of host instructions (e.g.,programming instructions) prior to control module 302 is on operation.The set of host instructions may be transmitted to control module 302via communication unit 1210-2. The user inputs may include, for example,interactions with a graphical programming environment, e.g., programmingby drag-and-drop of graphical representations of statement blocks. Insome embodiments, user 1202 may select existing demo programs. In thisembodiment, firmware update application 1218 may download firmware to beupdated on control module 302 from server 206 via communication unit1208-2, encrypt the firmware, and transmit the encrypted firmware tocontrol module 302 via communication unit 1210-2. The firmware updatestatus may be presented on the GUI of firmware update application 1218to inform user 1202.

It is to be appreciated that additional or alternative applications maybe loaded into memory 1206 and executed by processor 1204 of hosts 204for various configuration, control, and maintenance functions withrespect to the modular assembly robotic toy. In one example, ananalyzing application may be implemented to analyze sensor signalsobtained by sensor modules 304 or analyzing modules 308 to generateanalyzing results, e.g., voice or image recognition results. In anotherexample, an assembly module management application may be implemented todisplay a list of assembly modules 202 that are currently registered(e.g., have been plugged into the modular assembly robotic toy), a listof assembly modules 202 that are currently online (e.g., currentlyplugged into the modular assembly robotic toy and are on operation),and/or a list of assembly modules 202 that are currently offline (e.g.,currently de-coupled from the modular assembly robotic toy and are noton operation).

In this embodiment, communication units 1210 may communicate withassembly modules 202, e.g., control module 302, via wired or wirelesscommunication, such as USB, WiFi, or Bluetooth. For example, controlinstructions may be transmitted by communication unit 1210-1 to controlmodule 302 in real-time via Bluetooth, and programming instructions maybe transmitted by communication unit 1210-2 to control module 302 viaUSB. Module data of assembly modules 202 may be received bycommunication unit 1210-1 via Bluetooth as well in real-time or receivedby communication unit 1210-2 via USB after the operation of controlmodule 302 is completed. In this embodiment, communication units 1208may communicate with remote server 206 via the Internet. For example,sensor signals, analyzing results of sensor signals, user information,or usage data may be transmitted to server 208 via the Internet bycommunication unit 1208. Further analyzing results of sensor signals,e.g., voice and image recognition results, updated firmware, userinformation, or usage data may be received from server 206 via theInternet by communication unit 1208.

In this embodiment, server 206 includes a processor 1220, a memory 1222,and a communication unit 1224. Multiple applications, including anartificial intelligence application 1226, a user management application1228, and a firmware management application 1230, may be loaded intomemory 1222 and executed by processor 1220. Server 206 may communicatewith hosts 204 via the Internet or any other networks by communicationunit 1224, which may be, for example, a modem or any suitable networkadaptors.

In this embodiment, artificial intelligence application 1226 mayimplement any artificial intelligence algorithms, such as but notlimited to, machine learning, natural language processing, search andoptimization, logic programming and automated reasoning, probabilisticmethod, classifier and statistical learning method, neural network, anddeep learning. As described above, artificial intelligence application1226 may analyze the sensor signals or analyzing results of the sensorsignals from hosts 204 and/or analyzing modules 308 using any suitableartificial intelligence approaches to generate analyzing results andprovide the analyzing results to hosts 204 via communication unit 1224.For example, using any suitable artificial intelligence approach byartificial intelligence application 1226, voice or speech recognitionmay be performed on voice signals and image or video recognition may beperformed on image signals.

In this embodiment, user management application 1228 may store andorganize any information related to user 1202, for example, userprofile, demographics, accounts, activities, preferences, and interests.In some embodiments, user management application 1228 may perform userauthentication to verify whether user 1202 is authorized to assemble andcustomize the modular assembly robotic toy. In some embodiments, usermanagement application 1228 may facilitate user 1202 to interact withother users of modular assembly robotic toys in a dedicated onlinecommunity or any social media. For example, teachers may assist studentsto assemble and customize modular assembly robotic toys remotely viauser management application 1228 on server 206. In this embodiment,firmware management application 1230 may obtain, store, and distributefirmware to be updated on control modules 302 of modular assemblyrobotic toys. Firmware may be dynamically or periodically updated to fixbugs, add new functions, and improve hardware performance. Firmwaremanagement application 1230 may organize firmware by versions(reflecting the recency of firmware) or categories (for differentstructures, forms, and functions of modular assembly robotic toys). Insome embodiments, firmware updates may be notified and pushed to hosts204 once they become available or periodically according to an updateschedule.

FIG. 13 is a perspective view of an example of a modular assemblyunmanned aerial vehicle (UAV) robotic toy 1300 including multipleassembly modules 1302, 1304, and 1306 and connectors 1308 in accordancewith an embodiment. As described above, modular assembly robotic toysmay be assembled and customized to achieve a wide variety of structures,forms, and functions, for example, modular assembly robotic toy 100illustrated in FIGS. 1A-1C. As another example, modular assembly UAVrobotic toy 1300 includes a control module 1302 and four flightactuation modules 1304-1, 1304-2, 1304-3, and 1304-4. Each flightactuation module 1304 may be electrically and mechanically connected tocontrol module 1302 via a respective connector 1308 and connectioninterface 1310 of control module 1302. A set of propellers 1306 may beattached to each flight actuation module 1304 and driven by a motor in arespective flight actuation module 1304. Control module 1302 and eachflight actuation module 1304 may include spare connection interfaces1310 to be used to connect additional assembly modules, accessories, orany other physical structures. In one example, a payload may be attachedto the bottom of control module 1302, for example, a gimbal, a camera,or an additional battery pack. In this embodiment, modular assembly UAVrobotic toy 1300 may not include a separate power module. Instead, thepower module may be integrated into control module 1302 and/or flightactuation modules 1304. In some embodiments, a separate power module maybe plugged into modular assembly UAV robotic toy 1300.

Structures and functions of control module 1302 and flight actuationmodules 1304 may be the same as control module 302 and flight actuationmodules 320, respectively, as described above in detail. As toconnectors 1308, although the shape is different from that of connectors110 in order to adapt the aerodynamic shape of a UAV, each connector1308 still includes two open ends adapted to fitting into connectioninterfaces 1310 of two assembly modules, respectively, and tomechanically and electrically connect the two assembly modules asdescribed above with respect to connectors 110. It is to be appreciatedthat in some embodiments, different connectors may be used tomechanically and electrically connect two assembly modules of modularassembly UAV robotic toy 1300, e.g., control module 1302 and flightactuation module 1304. For example, one end of the connector may beintegrated with an assembly module and thus, the connector includes oneopen end adapted to fitting into connection interface 1310 of the otherassembly module. In other words, the connector may be part of anassembly module and can be attached to and detached from anotherassembly module, as opposed to a separate component that can be detachedfrom both assembly modules. In some embodiments, the connector may bemechanically connected to connection interface 1310 via any suitablemeans, such as magnets.

Connection Structure

FIG. 14A-14B are perspective views of an example of a connectionstructure in accordance with an embodiment. In this embodiment, as shownin FIG. 14A, the connection structure includes a connector 1402, a firstconnection interface 1404-1 on a first assembly module 1406-1, and asecond connection interface 1404-2 on a second assembly module 1406-2.Connector 1402 may be the same as connector 110 described above withrespect to FIGS. 1A-1C, and each connection interface 1404 may be thesame as connection interfaces described above with respect to FIGS.1A-1C as well. As shown in FIG. 14A, connection interfaces 1404-1 and1404-2 are parts of a color recognition module and a connector module,respectively. However, it is to be appreciated that connectioninterfaces 1404 can be parts of any assembly modules 202 describedherein. As described above, the number of connection interfaces 1404 ofan assembly module 202 is not limited. For example, first assemblymodule 1406-1, such as the color recognition module shown in FIG. 14A,may include a single connection interface 1404-1, while second assemblymodule 1406-2, such as the connector module shown in FIG. 14A, mayinclude multiple connection interfaces 1404-2.

As shown in FIG. 14B, the two ends of connector 1402 are plugged intoconnection interfaces 1404-1 and 1404-2, respectively, so as tomechanically and electrically connect first and second assembly modules1406-1 and 1406-2. As will be described below in detail, connector 1402may be plugged into connection interfaces 1404-1 and 1404-2 at multipleorientations relative to one another. In some embodiments, connector1402 may be plugged into connection interfaces 1404-1 and 1404-2 at anyorientations relative to one another. Thus, a user may no longer need toalign connector 1402 with each connection interface 1404 at a specificorientation to ensure mechanical and electrical connectivity. In thisembodiment, spare connection interfaces 1404-2 on second assembly module1406-2 may be used for connecting additional assembly modules to secondassembly module 1406-2 via additional connectors 1402. In thisembodiment, connector 1402 is detachable from each connection interface1404 after being plugged into connection interfaces 1404-1 and 1404-2.The connection structure disclosed herein thus provides an easy way toassemble assembly modules 202 to build modular assembly robotic toys anddissemble the modular assembly robotic toys into separate assemblymodules 202.

FIG. 15 is an exploded view of an example of a connection structure inaccordance with an embodiment. In this embodiment, the connectionstructure includes connector 1402 and a connection interface having acasing 1502 and a circuit board 1504. It is to be appreciated thatalthough one connection interface is illustrated in FIG. 15, anotherconnection interface having the same structure as the connectioninterface shown in FIG. 15 can be part of the connection structure.

FIG. 16A is a perspective view of an example of connector 1402 inaccordance with an embodiment. In this embodiment, connector 1402includes a casing 1506 having two open ends 1508-1 and 1508-2, lockmechanisms including snaps 1510-1 and 1510-2, protrusions 1512-1 and1512-2, and recesses 1514-1 and 1514-2, and a raised annular 1516. Eachopen end 1508 may be adapted to fitting into the connection interfaces1404-1 and 1404-2. In this embodiment, casing 1506 is in a substantiallycylindrical shape and includes two symmetric portions with respect toraised annular 1516. Casing 1506 may be made of any suitable materials,such as plastics. An inner space (not shown) is formed inside casing1506 between two open ends 1508-1 and 1508-2. In this embodiment,connector 1402 further includes four pins 1518 arranged and fixed in theinner space of casing 1506.

FIG. 16B is a perspective view of an example of pin 1518 of connector inFIG. 16A in accordance with an embodiment. In this embodiment, each pin1518 includes two ends 1602-1 and 1602-2 and a body 1604. A spring (notshown) may be disposed in the inner space of body 1604 and connectedbetween two ends 1602-1 and 1602-2. Each end 1602 of pin 1518 thus canmove up and down because of the resilience of the spring. Each pin 1518,including ends 1602, body 1604, and spring, may be made of any suitableelectrically conductive materials, such as copper or aluminum. Once eachend 1602 of pin 1518 is in contact with a surface, e.g., a contact, end1602 is pressed toward the surface by the spring to maintain reliableelectrical connectivity. Two ends 1602-1 and 1602-1 of pin 1518 areexposed by open ends 1508-1 and 1508-2 of casing 1506, respectively.Each pin 1518 is in parallel with one another and in parallel with thecentral axis of casing 1506. Pins 1518 provide electrical connectionsbetween two connection interfaces when connector 1402 is plugged intothe two connection interfaces. It is to be appreciated that the numberof pins 1518 in this embodiment corresponds to the number of lines ofbus 400 and thus, can be different in other examples. As shown in FIGS.15 and 16A, in this embodiment, four pins 1518 include a center pinarranged along the central axis of casing 1506 and three peripheral pinsarranged at concentric rings relative to the central axis of casing1506.

In this embodiment, lock mechanisms provide mechanical connection andstability between the two connection interfaces when connector 1402 isplugged into the two connection interfaces. Snaps 1510-1 and 1510-2 aredisposed on annular edges at open ends 1508-1 and 1508-2 of casing 1506,respectively. As shown in FIGS. 15 and 16A, snaps 1510 at each open end1508 may be equally spaced apart by recesses 1514, which are formed oncasing 1506. Protrusions 1512-1 and 1512-2 are disposed on the twosymmetric portions of the outer surface of casing 1506 separated byraised annular 1516, respectively. As shown in FIGS. 15 and 16A,protrusions 1512 on each portion of the outer surface of casing 1506 maybe equally spaced apart by recesses 1514 as well. It is to beappreciated that in some embodiments, lock mechanisms may include one orsome of, but not all of, snaps 1510, protrusions 1512, and recesses1514. In some embodiments, lock mechanisms other than snaps 1510,protrusions 1512, and recess 1514 may be formed in connector 1402.

Referring now to FIGS. 15 and 18, in this embodiment, casing 1502 of theconnection interface includes a cover 1520, a hole 1522, lock mechanismsincluding recesses 1524, protrusions 1526, and a lower annular edge (notshown), and an upper annular edge 1528. Casing 1502 may be made of anysuitable materials, such as plastics. In this embodiment, hole 1522 ofcasing 1502 is in a substantially cylindrical shape that fits thesubstantially cylindrical shape of connector 1402. Lock mechanismsprovide mechanically connection and stability between the connectioninterface and connector 1402 when one end of connector 1402 is pluggedinto the connection interface. The lower annular edge and upper annularedge 1528 are disposed at two ends of hole 1522 of casing 1502,respectively. Recesses 1524 are formed in casing 1502. As shown in FIGS.15 and 18, recesses 1524 may be equally spaced apart from one another.The number of recesses 1524 is the same as the number of protrusions1512-1 on one portion of the outer surface of casing 1506. Protrusions1526 are disposed on the inner surface of casing 1502. As shown in FIGS.15 and 18, protrusions 1526 may be equally spaced apart by recesses1524. The number of protrusions 1526 is the same as the number ofrecesses 1514-1 in one portion of casing 1506. It is to be appreciatedthat in some embodiments, lock mechanisms may include one or some of,but not all of, recesses 1524, protrusions 1526, and the lower annularedge. In some embodiments, lock mechanisms other than recesses 1524,protrusions 1526, and the lower annular edge may be formed in theconnection interface.

As shown in FIG. 18, in this embodiment, guiding holes 1802 are formedon a panel that is arranged at the lower end of hole 1522 of casing 1502and connected to the inner surface of casing 1502. When connector 1402is plugged into the connection interface, a portion of each pin 1518,including end 1602-1, passes through one of guiding holes 1802 to reachcircuit board 1504. The number of guiding holes 1802 in this embodimentis same as the number of contacts on circuit board 1504 and is largerthan the number of pins 1518 of connector 1402.

Referring now to FIGS. 15 and 17, in this embodiment, circuit board 1504of the connection interface includes a planar center contact 1530arranged at the center of circuit board 1504 and planar peripheralcontacts 1532 separately arranged at concentric rings 1531-1 and 1531-2on circuit board 1504. In this embodiment, as shown in FIG. 17, at anoutermost ring 1531-2 on circuit board 1504, a first set of fourperipheral contacts 1532-3 are electrically connected one another bycircuit board 1504, e.g., by wires inside the circuit board 1504 or onthe other side of circuit board 1504. Similarly, at outermost ring1531-2 on circuit board 1504, a second set of four peripheral contacts1532-2 are electrically connected one another by circuit board 1504,e.g., by wires inside the circuit board 1504 or on the other side ofcircuit board 1504. The first and second sets of peripheral contacts1532-3 and 1532-2 are electrically separate from each other. At aninnermost ring 1531-1 on circuit board 1504, all four peripheralcontacts 1532-1 are electrically connected one another by circuit board1504, e.g., by wires inside the circuit board 1504 or on the other sideof circuit board 1504. The set of peripheral contacts 1532-1 areelectrically separate from the first and second sets of peripheralcontacts 1532-3 and 1532-2. That is, four separate electrical contactscorresponding to center contact 1530, peripheral contacts 1532-1,peripheral contacts 1532-2, and peripheral contacts 1532-3 are formed oncircuit board 1504. Each of the four separate electrical contacts iselectrically connected to one of the four lines of bus 400. On the otherhand, when connector 1402 is plugged into the connection interface, eachof four pins 1518 of connector 1402 is in contact with a respective oneof the four separate electrical contacts. Specifically, the center pinis in contact with center contact 1530, and each of the peripheral pinsis in contact with one of the set of respective peripheral contacts 1532depending on the orientation at which connector 1402 is plugged into theconnection interface. In some embodiments, the set of four separateperipheral contacts 1532-1 in innermost ring 1531-1 may be replaced by asingle ring contact.

FIG. 19 is a cross-sectional view of an example of a connectionstructure in accordance with an embodiment. In this embodiment,connector 1402 is plugged into the two connection interfaces describedabove with respect to FIGS. 15-18 at one of a plurality of orientations.Pins 1518 of connectors 1402 are in contact with planar contacts of eachconnection interface so that the two connection interfaces areelectrically connected. Specifically, one ends 1602-1 of each pin 1518are in contact with planar contacts 1530 and 1532 on circuit board1504-1 of one connection interface, and another ends 1602-2 of each pin1518 are in contact with planar contacts 1530 and 1532 on circuit board1504-2 of another connection interface. Each pin 1518 passes through oneof guiding holes 1802 of each connection interface. Depending on theorientation at which connector 1402 is plugged into the connectioninterface, each peripheral pin of connector 1402 may pass throughdifferent guiding holes 1802 and in contact with different peripheralcontacts 1532 on circuit board 1504.

FIGS. 20A-20D are plan views of the connection interface in contact withpins 1518 of connector 1402 at four orientations with 90 degrees offset,respectively, in accordance with an embodiment. In FIGS. 20A-20D, eachsolid dot represents one pin 1518 passing through guiding hole 1802 andis in contact with corresponding planar contact 1530 or 1532 on circuitboard 1504. As described above, four pins 1518 include a center pinarranged along the central axis of casing 1506 and three peripheral pinsarranged along the concentric rings relative to the center pin. In thisembodiment, two peripheral pins that are electrically separate oneanother are arranged at the outermost ring relative to the center pin,and one peripheral pin is arranged at the innermost ring. As shown inFIGS. 20A-20D, regardless of the orientation, the center pin alwayspasses through the center guiding hole and in contact with centercontact 1530 on circuit board 1504.

As to the peripheral pin arranged at the innermost ring, the peripheralpin may pass through one of the four guiding holes at the innermost ringand be in contact with one of four peripheral contacts 1532-1 arrangedat the innermost ring on circuit board 1504 depending on theorientation. In this embodiment, the four guiding holes and peripheralcontacts 1532-1 are equally spaced apart at the innermost ring with 90degrees offset. As to the two peripheral pins arranged at the outermostring, each of the two peripheral pins may pass through one of fourguiding pins with 90 degrees offset at the outermost ring and be incontact with one of four peripheral contacts 1532-2 or 1532-3 with 90degrees offset at the outermost ring on circuit board 1504 depending onthe orientation. That is, by arranging two sets of peripheral contacts1532-2 and 1532-3 at the same outermost ring on circuit board 1504, eachof which is spaced apart with 45 degrees offset, the twoelectrically-separate peripheral pins can be arranged at the sameoutermost ring to save space required for arranging pin 1518 inconnector 1402. On the other hand, such arrangement can ensureelectrical connectivity when connector 1402 is plugged into theconnection interface at multiple orientations, thereby increasing theflexibility of the corresponding connection structure. It is to beappreciated that the number of orientations at which connector 1402 canbe plugged into the connection interface is not limited to four as shownin this embodiment. In other examples, by changing the number ofconcentric rings for peripheral pins, guiding holes, and peripheralcontacts, the number of peripheral pins, guiding holes, and peripheralcontacts arranged at each concentric ring, and/or the angular offsetbetween adjacent peripheral pins, guiding holes, and peripheral contactsarranged at each concentric ring, connector 1402 can be plugged into theconnection interface at any suitable number of orientations.

Returning to FIG. 19, in addition to electrical connection, whenconnector 1402 is plugged into the two connection interfaces at one ofthe plurality of orientations relative to one another, the lockmechanisms of connector 1402 are interlocked with the lock mechanisms ofeach connection interface so that the two connection interfaces aremechanically connected as well. In this embodiment, when connector 1402is plugged into the two connection interfaces, the central axis of hole1522 of casing 1502 is aligned with the central axis of casing 1506. Asshown in FIG. 19, snaps 1510-1 on one annular edge of casing 1506 aresnapped-fit to lower annular edge 1902-1 of casing 1502-1 of oneconnection interface, and snaps 1510-2 on another annular edge of casing1506 are snapped-fit to lower annular edge 1902-2 of casing 1502-2 ofanother connection interface. As shown in FIG. 19, each protrusion1512-1 on one portion of the outer surface of casing 1506 is insertedinto a respective recess 1524-1 in casing 1502-1 of one connectioninterface, and each protrusion 1512-2 on another portion of the outersurface of casing 1506 is inserted into a respective recess 1524-2 incasing 1502-2 of another connection interface. Although not shown inFIG. 19, in some embodiments, each protrusion 1526 on the inner surfaceof casing 1502 of a connection interface may be inserted into arespective recess 1514 in casing 1506 to further enhance the mechanicalconnection between two connection interfaces via connector 1402.

Lock mechanisms of connector 1402 and connection interfaces not only canprovide mechanical stability to the corresponding structure, but alsocan guide connector 1402 to be plugged into the connection interfaces atcertain orientations. In this embodiment, upper annular edge 1528-1 ofcasing 1502-1 of one connection interface abuts against one side ofraised annular 1516 of casing 1506 of connector 1402, and upper annularedge 1528-2 of casing 1502-2 of another connection interface abutsagainst another side of raised annular 1516, which may provideadditional mechanical stability and axial guidance to the correspondingconnection structure. In this example, the number of possibleorientations at which connector 1402 can be plugged into the twoconnection interfaces is the same as the number of recesses 1524 incasing 1502, the number of recesses 1514 in casing 1506, the number ofprotrusions 1526 on casing 1502, and the number of protrusions 1512 oncasing 1506. For example, each of recesses 1524 or 1514 is 90 degreesoffset from adjacent recesses 1524 or 1514, and each of protrusions 1526or 1512 is also 90 degrees offset from adjacent protrusions 1526 or1512. It is to be appreciated that the number of orientations at whichconnector 1402 can be plugged into the connection interface is notlimited to four as shown in this embodiment. In other examples, bychanging the number of lock mechanisms and/or the angular offset betweenadjacent lock mechanisms, connector 1402 can be plugged into theconnection interface at any suitable number of orientations.

FIG. 21A-21B are perspective views of various examples of a circuitboard 2102 or 2108 having ring contacts 2106 thereon in accordance withan embodiment. In this embodiment, a plurality of ring contacts 2106,each arranged at one of concentric rings on circuit board 2102 or 2108,replace peripheral contacts 1532 illustrated in FIG. 17. Similar to theembodiment described with respect to FIG. 17, a center contact 2104 isarranged at the center of circuit board 2102 or 2108. In thisembodiment, a corresponding connector includes a center pin arrangedalong the central axis of casing, and a plurality of peripheral pinsarranged at concentric rings relative to the central axis. The number ofring contacts 2106 in this embodiment is the same as the number ofperipheral pins of the corresponding connector. For example, in FIG.21A, circuit board 2102 includes three ring contacts 2106 and thus, thecorresponding connector includes three peripheral contacts, each ofwhich can be in contact with a respective ring contact 2106. In FIG.21B, circuit board 2108 includes four ring contacts 2106 and thus, thecorresponding connector includes four peripheral contacts, each of whichcan be in contact with a respective ring contact 2106.

Compared with the embodiment with respect to FIGS. 15-20 in which someperipheral pins are arranged at the same outermost ring, the spacerequired to arrange the peripheral pins in the connector and theperipheral contacts on circuit board 2102 or 2108 may be increased inthis embodiment. On the other hand, the arrangement disclosed in thisembodiment can ensure electrical connectivity between the connector andthe connection interface when the connector is plugged at anyorientations relative to the connection interface, i.e., can achieve 360degrees rotation. Also, the arrangement disclosed in this embodiment issimple for adding more electrical contacts between the connector and theconnection interface, i.e., by adding additional ring contacts at outerconcentric rings on the circuit board 2102 or 2108 of the connectioninterface and adding corresponding peripheral pins to the connector. Itis to be appreciated that in this embodiment, lock mechanisms of thecorresponding connector and connection interface may be different fromthe lock mechanisms described in the embodiment with respect to FIGS.15-20 to achieve “360 degrees rotation” of the connection structure inthis embodiment.

FIGS. 22A and 22B are perspective view and cross-sectional view,respectively, of another example of a connector 2202 in accordance withan embodiment. In this embodiment, casing and mechanical locks thereonhave the same structures as the ones described in the embodiment withrespect to FIGS. 15-20 and thus, will not be repeated again. In thisembodiment, connector 2202 includes a center pin 2204 and threeconcentric ring contacts 2206-1, 2206-2, and 2206-3. Center pin 2204 isarranged along the central axis of the casing, and each ring contact2206 is arranged concentric to center pin 2204 (the central axis). Eachof center pin 2204 and ring contacts 2206 includes two ends, each ofwhich is exposed by one of two open ends of the casing of connector2202, respectively. FIG. 22C is a perspective view of contacts 2204 and2206 of connector 2202 in accordance with an embodiment. As shown inFIGS. 22B and 22C, the lengths of ring contacts 2206 are different. Forexample, ring contact 2206-1 is arranged at the innermost ring and hasthe largest length among three ring contacts 2206; ring contact 2206-2is arranged at the intermediate ring and has the second largest lengthamong three ring contacts 2206; ring contact 2206-3 is arranged at theoutermost ring and has the smallest length among three ring contacts2206. In this embodiment, center pin 2204 has the length larger thanthose of ring contacts 2206-2 and 2206-3 but smaller than that of ringcontact 2206-1. In this embodiment, because three ring contacts 2206 arearranged concentrically, innermost ring contact 2206-1 has the smallestdiameter, and outermost ring contact 2206-3 has the largest diameteramong three ring contacts 2206. Center pin 2204 and each ring contact2206 may be made of any suitable electrically conductive materials, suchas copper or aluminum.

FIG. 23 is a plan view of another example of a connection interface inaccordance with an embodiment. FIG. 24A is a plan view of anotherexample of a circuit board 2402 of the connection interface in FIG. 23in accordance with an embodiment. The connection interface in thisembodiment can be used with connector 2202 illustrated in FIGS. 22A-22C.The connection interface may include a casing 2302 and circuit board2402. In this embodiment, mechanical locks on casing 2302 have the samestructures as those described in the embodiment with respect to FIGS.15-20 and thus, will not be repeated again. In this embodiment, insteadof have guiding holes 1802 arranged at the center and concentric ringson the panel as shown in FIG. 18, a center guiding hole and three ringopenings are formed on the panel to allow corresponding center pin 2204and ring contacts 2206 to pass through, respectively. In thisembodiment, a center contact 2404 and three peripheral contacts 2406-1,2406-2, and 2406-3 are arranged on circuit board 2402. Center contact2404 is arranged at the center of circuit board 2402, and eachperipheral contact 2406 is arranged at a different distance from centercontact 2404. In other words, each peripheral contact 2406 is arrangedat a respective concentric ring. Specifically, peripheral contact 2406-1is arranged in the innermost ring and has the shortest distance fromcenter pin 2404 among three peripheral contacts 2406; peripheral contact2406-2 is arranged in the intermediate ring and has the second shortestdistance from center pin 2404 among three peripheral contacts 2406;peripheral contact 2406-3 is arranged in the outermost ring and has thelongest distance from center pin 2404 among three peripheral contacts2406.

FIG. 24B-24D are cross-sectional views of another example of aconnection structure including connector 2202 in FIG. 22A in contactwith the connection interface in FIG. 23 in accordance with anembodiment. In this embodiment, when connector 2202 is plugged into theconnection interface, center contact 2404 may pass through the centerguiding hole in casing 2302 (see FIG. 23) to be in contact with centerpin 2204 of connector 2202, and each peripheral contact 2406 may passthrough a respective ring opening in casing 2302 (see FIG. 23) to be incontact with a respective ring contact 2206. As a result, fourelectrical contacts are formed by the connection structure, whichcorrespond to the four lines of bus 400. To ensure reliable electricalconnectivity, in this embodiment, one or more of center contact 2404 andperipheral contacts 2406 are deformable so as to be pressed onto arespective contact 2204 or 2206 of connector 2202 when connector 2202 isplugged into the connection interface. For example, center contact 2404may include an end connected to a spring as shown in FIGS. 24B-24D. Eachperipheral contact 2406 may include a resilient zigzag portion that candeform under pressure.

The arrangement disclosed in this embodiment with respect to FIGS. 22-24can ensure electrical connectivity between connector 2202 and theconnection interface when the connector is plugged at any orientationrelative to the connection interface, i.e., can achieve 360 degreesrotation. Also, the arrangement disclosed in this embodiment is simplefor adding more electrical contacts between connector 2202 and theconnection interface, i.e., by adding additional peripheral contacts atouter concentric rings on circuit board 2402 of the connection interfaceand adding corresponding ring contacts to connector 2202. Moreover, asdescribed below, other structures of connector 2202 and the connectioninterface in this embodiment, such as the lock mechanisms, are the sameas the corresponding structures in the embodiment with respect to FIGS.15-20. Similar to the embodiment with respect to FIGS. 15-20, whenconnector 2202 is plugged into two connection interfaces at multipleorientations relative to one another, the lock mechanisms of connector2202 are interlocked with the lock mechanism of each connectioninterface so that the two connection interfaces are mechanicallyconnected. In this embodiment, connector 2202 is detachable from eachconnection interface after being plugged into the connection interfaces.The connection structure disclosed herein thus provides an easy way toassemble assembly modules to build modular assembly robotic toys anddissemble the modular assembly robotic toys into separate assemblymodules.

Assembly Module Registration and Status Update

FIG. 25 is a depiction of an example of communication between controlmodule 302 and multiple assembly modules 202 and hosts 204 in accordancewith an embodiment. In this embodiment, control module 302 may performbidirectional communication with hosts 204 using USB and/or Bluetooth.In one example, host instructions generated by hosts 204, for example,control instructions, may be transmitted to control module 302 using BLEtechnologies. In another example, host instructions generated by hosts204, for example, programming instructions, may be transmitted tocontrol module 302 using USB. Error detection and correction codes, suchas cyclic redundancy check (CRC) code, may be added to the raw data ofhost instructions to ensure reliable delivery of host instructions. Onthe other hand, module data, e.g., sensor signals obtained by sensormodules 304 and status data of each assembly module 202, may betransmitted from control module 302 to hosts 204 using BLE technologies.

In this embodiment, firmware may be transmitted from hosts 204 tocontrol module 302 using BLE or USB as well. As will be described belowin detail, in some embodiments, the firmware file may be divided intomultiple data packages with the same or different size, each of whichincludes a header and an error detection and correction code. Each datapackage may be transmitted in sequence to control module 302 and checkedfor data error. An end data package may be added to indicate the end ofthe transmission of the firmware data package stream. In someembodiments, the firmware file may be encrypted using information thatis unique to control module 302 to ensure that only the correct controlmodule 302 can decrypt and update the received firmware.

In this embodiment, as described above, control module 302 may performbidirectional communication with any assembly module 202 in the modularassembly robotic toy via bus 400. For example, bus 400 may be a CAN bus,and CAN data transmission and ID allocation protocols may be used forcommunication between control module 302 and assembly modules 202. Inthis embodiment, each assembly module 202 includes an initial ID thatcan uniquely identify assembly module 202. The initial ID may be storedin persistent storage 616, e.g., an ROM or a flash, of correspondingassembly module 202 and cannot be changed. In some embodiments, a moduletype ID that is indicative of the type of corresponding assembly module202 may be part of the initial ID or may be derived from the initial ID.The same type of assembly modules, e.g., all power modules 310 or allconnector modules 312, may have the same module type ID. The initial IDmay be used by control module 302 and hosts 204 to identifycorresponding assembly module 202 and updating status (e.g., online oroffline) of assembly module 202. In some embodiments, the initial ID maybe used as the communication address of corresponding assembly module202 before a communication ID is assigned to assembly module 202.

In this embodiment, a communication ID that is used as the communicationaddress (e.g., source or destination address) via bus 400 may begenerated based on the initial ID and assigned to corresponding assemblymodule 202 by control module 302. In some embodiments, a communicationID may include a transmission ID and a receiving ID. For example, thetransmission ID may be used when a message is transmitted from controlmodule 302 to corresponding assembly 202, and the receiving ID may beused when a message is received by control module 302 from correspondingassembly module 202. In some embodiments, the receiving ID may bederived from the corresponding transmission ID. Thus, control module 302may only need to provide the transmission ID to corresponding assemblymodule 202, and assembly module 202 can derive the correspondingreceiving ID based on the received transmission ID. In one example, thereceiving ID may be the transmission ID+0x0100. For example, if thetransmission ID is 0x0060, then the receiving ID is 0x0160.

In this embodiment, control module 302 may transmit operationinstructions to each assembly module 202 using the transmission ID ofcorresponding assembly module 202 through the two data lines of bus 400.The operation instructions may be transmitted in the form of datamessages, each of which includes the transmission ID of correspondingassembly module 202 as the destination address. TABLE 1 below shows oneexample of a message of operation instructions transmitted from controlmodule 302 to infrared sensor module 314.

TABLE 1 Byte Field Value 0 Tx ID 0x0C 1 Working 1: Active Mode Mode 2Emitting 0: Repeated Emitting Mode 1: Single Emitting 3 Interval LowByte 4 (Repeated High Byte Emitting) 5 N/A N/A 6 N/A N/A 7 N/A N/A

On the other hand, each assembly module 202 may transmit module data,e.g., sensor signals or status data, to control module 302 through thetwo data lines of bus 400. The module data may be transmitted in theform of data messages, each of which includes the receiving ID ofcorresponding assembly module 202 to identify the source of the message.TABLE 2 below shows one example of a message of module data transmittedfrom power module 310 to control module 302.

TABLE 2 Byte Field Value 0 Rx ID 0x01 1 Power Level Low Byte 2 PowerLevel High Byte 3 N/A N/A 4 N/A N/A 5 N/A N/A 6 N/A N/A 7 N/A N/A

When an assembly module 202 is first time coupled into a modularassembly robotic toy, assembly module 202 may need to be registered aspart of the modular assembly robotic toy by control module 302. Forexample, for modular assembly robotic toy 100 illustrated in FIGS.1A-1C, when a user first time plugs infrared sensor module 112 intomodular assembly robotic toy 100 to add the object detection capability,newly-added infrared sensor module 112 may need to be registered as partof modular assembly robotic toy 100. FIG. 26 is an event diagramillustrating an example of registering assembly module 202 in accordancewith an embodiment. In this embodiment, registration of new assemblymodule 202 may be informed to host 204 by control module 302 so thathost 204 can manage all registered assembly modules 202 of the modularassembly robotic toy and provide the registration information to theuser and/or server 206.

At 2602, assembly module 202 may retrieve the initial ID thereof. Forexample, the initial ID that is unique to assembly module 202 may bestored into persistent storage 616 of assembly module 202 when assemblymodule 202 was manufactured, which cannot be modified afterwards. Insome embodiments, the initial ID may be stored at a predefined addresswith a predefined length in persistent storage 616, and assembly module202 may retrieve the initial ID by reading data from the predefinedaddress with the predefined length. If no data is stored at thepredefined address, then assembly module 202 cannot work. In someembodiments, a separate indicator may be stored in persistent storage616, and assembly module 202 may first read the indicator to see if theinitial ID has been properly assigned and stored. This process may beautomatically triggered when assembly module 202 is plugged into themodular assembly robotic toy and powered up by the power signals fromthe power lines of bus 400.

At 2604, assembly module 202 may transmit a module initiation messageincluding the retrieved initial ID to control module 302 via the datalines of bus 400. TABLE 3 below illustrates one example of the moduleinitiation message transmitted from assembly module 202 to controlmodule 302. In this example, the field “Flag” indicates that thesix-byte initial ID starts from the next byte of the message. In someembodiments, the module initiation message may also include the moduletype ID of assembly module 202.

TABLE 3 Byte Field Value 0 Flag 0x1D 1 Initial 2 ID 3 4 5 6 7 N/A N/A

At 2606, after receiving the module initiation message from assemblymodule 202, control module 302 may assign a communication ID to assemblymodule 202, which can be used for communication between assembly module202 and control module 302 via bus in the future. The communication IDmay be generated based on information in the module initiation message,for example, the initial ID and/or the module type ID of assembly module202. For example, control module 302 may generate the communication IDbased on the module type ID if assembly module 202 is the only assemblymodule of the same type that has been registered with the modularassembly robotic toy. If there is more than one assembly module 202 ofthe same type, i.e., the module type ID is no longer unique, thencontrol module 302 may generate the communication ID based on theinitial ID of assembly module 202, which uniquely identifiescorresponding assembly module 202 as described above. In someembodiments, a certain range of commutation IDs may be reserved for eachtype of assembly modules 202. For example, communication IDs formovement modules 318 may be in the range from 0x31 to 0x3F. In someembodiments, the commutation ID may include a transmission ID and areceiving ID as described above.

At 2608, control module 302 may transmit an ID assignment messageincluding the assigned communication ID to assembly module 202 via thedata lines of bus 400. In some embodiments, if the communication IDincludes both transmission ID and receiving ID, the ID assignmentmessage may include both transmission and receiving IDs or thetransmission ID only (if the receiving ID can be derived from thetransmission ID). TABLE 4 below illustrates one example of the IDassignment message transmitted from control module 302 to assemblymodule 202. As described above, in this example, the ID assignmentmessage includes the initial ID of assembly module 202 as thedestination address of the message. The initial ID may not be used infuture communication between assembly module 202 and control module 302after the communication ID is delivered to assembly module 202.

TABLE 4 Byte Field Value 0 Flag 0x1D 1 Initial 2 ID 3 4 5 6 7 Comm. ID

At 2610, after receiving the ID assignment message including theassigned communication ID from control module 302, assembly module 202may start to periodically transmit “heartbeat” messages indicative ofnormal status of assembly module 202 to control module 302. Eachheartbeat message may include the communication ID, for example, thereceiving ID, to identify the source of the message.

At 2612, once control module 302 receives the first heartbeat messagefrom corresponding assembly module 202 and identifies that assemblymodule 202 has not been registered before with the modular assemblyrobotic toy, control module 302 may add the initial ID of correspondingassembly module 202 to an online module list. The online module list mayinclude initial IDs of all assembly modules 202 that have registeredwith the modular assembly robotic toy and that are currently coupled tothe modular assembly robotic toy. At 2614, control module 302 may alsoassign resources to assembly module 202. At 2616, control module 302 mayreset the value of the threshold period of assembly module 202. Thevalue of the threshold period may continuously decrease as time goes by.The threshold period may be used by control module 302 to determinewhether corresponding assembly module 202 is decoupled from the modularassembly robotic toy (i.e., becomes offline). Newly-added assemblymodule 202 is then considered being registered with the modular assemblyrobotic toy by control module 302.

At 2618, once the registration processes of assembly module 202 arecompleted, control module 302 may transmit a module registration messageto host 204 indicating that assembly module 202 is registered. In someembodiments, host 204 may update a registration list to include assemblymodule 202 and present a message to the user informing the registrationof assembly module 202.

FIG. 27 is a flow chart illustrating an example of a method 2700 forregistering assembly module 202 in accordance with an embodiment. Itwill be described with reference to the above figures. However, anysuitable circuit, logic, unit, or module may be employed. Method 2700can be performed by any suitable circuit, logic, unit, or module thatcan comprise hardware (e.g., circuitry, dedicated logic, programmablelogic, microcode, etc.), software (e.g., instructions executing on aprocessing device), or a combination thereof. It is to be appreciatedthat not all steps may be needed to perform the disclosure providedherein. Further, some of the steps may be performed simultaneously, orin a different order than shown in FIG. 27, as will be understood by aperson of ordinary skill in the art.

Starting at 2702, control module 302 may receive a first message havinga first ID of assembly module 202. The first ID may be stored inpersistent storage 616 of assembly module 202 and uniquely identifyassembly module 202. In some embodiments, the first message may furtherinclude a third ID that is indicative of the type of assembly module202. The third ID may be either separate from the first ID, a part ofthe first ID, or can be derived from the first ID.

At 2704, control module 302 may generate a second ID for assembly module202 based on the first ID of assembly module 202. The second ID may beused for future communication between control module 302 and assemblymodule 202. In some embodiments, the second ID may be generated based onboth the first ID and the third ID or based on the third ID alone. Insome embodiments, the second ID may include two sub-IDs, e.g., atransmission ID and a receiving ID, or may be one of the transmissionand receiving IDs. At 2706, control module 302 may transmit a secondmessage having the second ID to assembly module 202. In someembodiments, the second message may include the first ID and/or thethird ID of assembly module 202 as well.

At 2708, control module 302 may determine whether a third message havingthe second ID for assembly module 202 is received from assembly module202. In some embodiments, the third message further includes a normalstatus indicator and is periodically transmitted by assembly module 202to control module 302. In other words, the third message may be aheartbeat message. The second ID was assigned by control module 302 toassembly module 202 and transmitted to assembly module 202 for futurecommunication between control module 302 and assembly module 202,including heartbeat messages. If no third message is received, thencontrol module 302 may continue checking the receipt of the thirdmessage. If the third message is received, then at 2710, control module302 may register assembly module 202 as a new assembly module of themodular assembly system, e.g., a robotic toy.

An embodiment of 2710 shall now be described in greater detail.Specifically, at 2712, control module 302 may add the first ID ofassembly module 202 into an online module list. That is, assembly module202 may be associated with a status as being coupled to the modularassembly system. At 2714, control module 302 may assign resources toassembly module 202. At 2716, control module 302 may reset the thresholdperiod of assembly module 202. At 2718, control module 302 may transmita fourth message having the status of assembly module 202 to host 204.The status may indicate that assembly module 202 is coupled to themodular assembly system and registered as a new assembly module of themodular assembly system.

FIG. 28 is a flow chart illustrating another example of a method 2800for registering assembly module 202 in accordance with an embodiment. Itwill be described with reference to the above figures. However, anysuitable circuit, logic, unit, or module may be employed. Method 2800can be performed by any suitable circuit, logic, unit, or module thatcan comprise hardware (e.g., circuitry, dedicated logic, programmablelogic, microcode, etc.), software (e.g., instructions executing on aprocessing device), or a combination thereof. It is to be appreciatedthat not all steps may be needed to perform the disclosure providedherein. Further, some of the steps may be performed simultaneously, orin a different order than shown in FIG. 28, as will be understood by aperson of ordinary skill in the art.

Starting at 2802, assembly module 202 may obtain the first ID frompersistent storage 616. In some embodiments, 2802 may be automaticallyperformed in response to assembly module 202 being powered-up. At 2804,assembly module 202 may transmit the first message having the first IDto control module 302. The first message may include the third ID thatis indicative of the type of assembly module 202. At 2806, assemblymodule 202 may determine whether the second message having the second IDis received from control module 302. If no second message is received,then assembly module 202 may continue checking the receipt of the secondmessage. If the second message is received, then at 2808, assemblymodule 202 may transmit the third message having the second ID tocontrol module 302. In some embodiments, assembly module 202 mayperiodically transmit heartbeat messages including the second ID that isindicative of the source of the heartbeat messages to control module302.

In some situations, a registered assembly module of a modular assemblysystem may be intentionally or accidently decoupled from the modularassembly system due to, for example, loose connectors, poor contacts,etc. Thus, it may be desirable to effectively and efficiently detect andupdate the status (e.g., online or offline) of each registered assemblymodule of the modular assembly system without turning off the power ofthe modular assembly system. For example, for modular assembly robotictoy 100 illustrated in FIGS. 1A-1C, when registered infrared sensormodule 112 is accidentally decoupled from modular assembly robotic toy100, control module 102 may quickly detect such an event and update thestatus of infrared sensor module 112 as being offline. When infraredsensor module 112 is plugged back into modular assembly robotic toy 100,control module 102 may also quickly detect such an event and update thestatus of infrared sensor module 112 as being online. FIG. 29 is anevent diagram illustrating an example of updating a status associatedwith assembly module 202 in accordance with an embodiment. In thisembodiment, status update of assembly module 202 may be informed to host204 by control module 302 so that host 204 can manage the status of allregistered assembly modules 202 of the modular assembly robotic toy andprovide the status information to the user and/or server 206.

At 2902, assembly module 202 may periodically transmit heartbeatmessages that are indicative of normal status of assembly module 202 tocontrol module 302. Each heartbeat message may include the communicationID, for example, the receiving ID, to identify the source of themessage. In some embodiments, the transmission of heartbeat messages maybe an independent process that is unconditionally performed irrespectiveof other events or processes in this embodiment. In some embodiments,the transmission of heartbeat messages may be dependent upon otherevents or the outcome of other processes in this embodiment as will bedescribed below in detail.

At 2904, host 204 may transmit a data request message to control module302 requesting data from an assembly module 202. For example, host 204may request status data or sensor signals from sensor modules 304. At2906, in response to receiving the data request message, control module302 may transmit a data request message to corresponding assembly module202 via the data lines of bus 400 for requesting the data from assemblymodule 202. The data request message may include the transmission IDassigned to assembly module 202 as the destination address of the datarequest message as described above.

At 2908, in response to receiving the data request message from controlmodule 302, assembly module 202 may retrieve the requested data, e.g.,from persistent storage 616, memory 604, and/or any other suitablecomponents. At 2910, assembly module 202 may transmit a data message tocontrol module 302 via the data lines of bus 400. The data message mayinclude the requested data and the receiving ID of assembly module 202that is indicative of the source of the data message. At 2912, inresponse to receiving the data message from assembly module 202 andidentifying the source of the data message based on the receiving ID,control module 302 may transmit a data message including the requesteddata to host 204. In some embodiments, if assembly module 202 keepstransmitting data messages to control module 302 in a time interval,assembly module 202 may skip transmitting the heartbeat messages tocontrol module 302 because the data messages may also indicate thenormal status of assembly module 202.

At 2914, in response to receiving either the heartbeat message at 2902or the data message at 2910 from assembly module 202, control module 302can determine that assembly module 202 is currently coupled to themodular assembly robotic toy (i.e., online) and thus, add the initial IDof corresponding assembly module 202 to the online module list. In someembodiments, the communication ID assigned to assembly module 202 may berecorded as well in the online module list. At 2916, control module 302may also reset the value of the threshold period of assembly module 202.At 2918, control module 302 may transmit a status message to host 204,which indicates the online status of corresponding assembly module 202.In some embodiments, host 204 may update an online module list toinclude assembly module 202 and present a message to the user informingthe online status of assembly module 202.

FIG. 30 is an event diagram illustrating another example of updating astatus associated with assembly module 202 in accordance with anembodiment. At 3002, host 204 may transmit a data request message tocontrol module 302 for requesting data from assembly module 202. Forexample, host 204 may request status data or sensor signals from sensormodules 304. At 3004, in response to receiving the data request message,control module 302 may transmit a data request message to correspondingassembly module 202 via the data lines of bus 400 requesting the datafrom assembly module 202. The data request message may include thetransmission ID assigned to assembly module 202 as the destinationaddress of the data request message as described above.

At 3006, control module 302 neither receives a data message fromassembly module 202 as a response to the data request messagetransmitted at 3004 nor receives a heartbeat message from assemblymodule 202 until the threshold period of corresponding assembly module202 expires. Control module 302 thus may determine that assembly module202 is currently decoupled from the modular assembly robotic toy (i.e.,becomes offline). At 3008, control module 302 may move the initial ID ofassembly module 202 to an offline module list. In some embodiments, thecommunication ID assigned to assembly module 202 may be recorded in theoffline module list as well. In some embodiments, control module 302 maynot transmit the data request message to assembly module 202 at 3004. At3006, if control module 302 does not receive a heartbeat message fromassembly module 202 until the threshold period of assembly module 202expires, control module 302 may also move the initial ID of assemblymodule 202 to the offline module list. At 3010, control module 302 maytransmit a status message to host 204, which indicate the offline statusof corresponding assembly module 202. In some embodiments, host 204 mayupdate an offline module list to include assembly module 202 and presenta message to the user informing the offline status of assembly module202.

FIG. 31 is a flow chart illustrating an example of a method 3100 forupdating a status associated with assembly module 202 in accordance withan embodiment. It will be described with reference to the above figures.However, any suitable circuit, logic, unit, or module may be employed.Method 3100 can be performed by any suitable circuit, logic, unit, ormodule that can comprise hardware (e.g., circuitry, dedicated logic,programmable logic, microcode, etc.), software (e.g., instructionsexecuting on a processing device), or a combination thereof. It is to beappreciated that not all steps may be needed to perform the disclosureprovided herein. Further, some of the steps may be performedsimultaneously, or in a different order than shown in FIG. 31, as willbe understood by a person of ordinary skill in the art.

Starting at 3102, control module 302 may transmit a first message toassembly module 202 requesting data from assembly module 202. The firstmessage may include a communication ID assigned to assembly module 202as the destination address. As described above, the communication ID maybe generated by control module 302 based on the initial ID of assemblymodule 202. In some embodiments, the first message may be generated inresponse to receiving a data request message from host 204.

At 3104, control module 302 may determine whether a second messageincluding the requested data is received from assembly module 202. Ifcontrol module 302 does not receive the second message from assemblymodule 202, then at 3106, control module 302 may determine whether athird message including a normal status indicator, e.g., a heartbeatmessage, is received from assembly module 202. If control module 302also does not receive the third message from assembly module 202, thencontrol module 302 may check whether the threshold period of assemblymodule 202 expires. If the threshold period expires, then at 3118,control module 302 may update status of assembly module 202 as beingdecoupled from the modular assembly system (i.e., offline). If at 3116,the threshold period has not expired, then method 3100 returns to 3102.

If control module 302 receives the second message at 3104 or receivesthe third message at 3106 from assembly module 202, then at 3108,control module 302 may update the status of assembly module 202 as beingcoupled to the modular assembly system (i.e., online). An embodiment of3108 shall now be described in greater detail. Specifically, at 3110,control module 302 may determine whether the initial ID and/orcommunication ID of assembly module 202 is in the online module list. Ifthe initial ID and/or communication ID of assembly module 202 is not inthe online module list (meaning that, for example, assembly module 202may be quickly re-plugged into the modular assembly system after beingdecoupled from the modular assembly system), then at 3112, controlmodule 302 may add the initial ID and/or communication ID of assemblymodule 202 into the online module list. In some embodiments, resourcespreviously assigned to assembly module 202 may be resumed. At 3114,control module 302 may also reset the value of the threshold period ofassembly module 202. If at 3110, the initial ID and/or communication IDof assembly module 202 is in the online module list (meaning that, forexample, assembly module 202 remains being plugged into the modularassembly system), control module 302 may skip 3112 and reset the valueof the threshold period of assembly module 202 at 3114.

After 3118 or 3114, control module 302 may transmit a fourth messageincluding the current status of assembly module 202, either online oroffline, to host 204 at 3120. In some embodiments, host 204 may updatethe online module list or the offline module list to include assemblymodule 202 accordingly and present a message to the user informing thecurrent online or offline status of assembly module 202.

FIG. 32 is a flow chart illustrating another example of a method 3200for updating a status associated with assembly module 202 in accordancewith an embodiment. It will be described with reference to the abovefigures. However, any suitable circuit, logic, unit, or module may beemployed. Method 3200 can be performed by any suitable circuit, logic,unit, or module that can comprise hardware (e.g., circuitry, dedicatedlogic, programmable logic, microcode, etc.), software (e.g.,instructions executing on a processing device), or a combinationthereof. It is to be appreciated that not all steps may be needed toperform the disclosure provided herein. Further, some of the steps maybe performed simultaneously, or in a different order than shown in FIG.32, as will be understood by a person of ordinary skill in the art.

Starting at 3202, assembly module 202 may receive the first message fromcontrol module 302 requesting data from assembly module 202. At 3204,assembly module 202 may retrieve the requested data. At 3206, assemblymodule 202 may transmit the second message including the requested datato control module 302. In parallel, at 3208, assembly module 202 mayperiodically transmit the third message including the normal statusindicator to control module 302. It is to be appreciated that asdescribed above, in some embodiments, assembly module 202 may skiptransmitting the third message to control module 302 if the secondmessage has been transmitted to control module 302 within a time period.In some embodiments, each of the second message and the third messagemay also include a communication ID assigned by control module 302 toassembly module 202 that indicates the source of the second message orthird message.

Control Module Firmware Update

In some situations, it may be desirable to update firmware of assemblymodules 202, such as control modules 302. In one example, bugs detectedin previous version of firmware may be fixed in the updated firmware. Inanother example, new functions may be added to the updated firmware. Instill another example, an assembly module 202 may become a differenttype of assembly module 202 by downloading a different firmware. In anyevent, there is a risk that the firmware downloaded by a particularassembly module 202 is not for the assembly module 202, either bymistakes or by batching downloading from malicious copying. FIGS. 33-35disclose examples of updating firmware on control module 302 in a secureway to ensure that the firmware to be updated is for the correct controlmodule.

FIG. 33 is an event diagram illustrating an example of updating firmwareon control module 302 in accordance with an embodiment. At 3302, controlmodule 302 may sample noise signals of control module 302 itself. It isunderstood that certain noise signals, e.g., Gaussian white noise, arerandom signals at any time and thus, may be unique to the source of thenoise signals, e.g., control module 302 in this example. It is to beappreciated that in some embodiments, the sampled signals may not belimited to noise signals and may be any signals that is unique tocontrol module 302. In this embodiment, control module 302 may firstsample certain components of control module 302, e.g., the power supply,to obtain an initial signal, e.g., a power signal. In one example, thesampling may be performed by analog-to-digital conversion (ADC). Controlmodule 302 then may filter the initial signal for removing noise signalto obtain a filter signal, e.g., a filtered power signal. The filteringmay be performed by Kalman filtering, first-order lag or low-passfiltering, weighted average recursive filtering, Butterworth filtering,Chebyshev filtering, or any other suitable filters. Control module 302may compute a noise signal based on the initial and filtered signals.For example, the value of the noise signal may be obtained bysubtracting the value of the initial signal by the value of the filteredsignal.

At 3304, control module 302 may compute an encryption key based on thenoise signal. For example, modulo operation may be used for calculatingthe encryption key. In one example, the value of the noise signal maymodulo 16 (NoiseValue % 16) to obtain the encryption key. In someembodiments, the length of the encryption key may be checked to see ifit meets the security requirement. If the length of the encryption keydoes not meet the security requirement, different modulo operation maybe applied to generate another encryption key. At 3306, control module302 may store the encryption key, for example, in persistent storage716. It is to be appreciated that the encryption key may be stored inany suitable storage.

It is to be appreciated that in some embodiments, an encryption key maybe generated by other approaches. In one example, any suitablecomputational random-number generator (RNG) may be used by controlmodule 302 to generate the encryption key, such as linear congruentialgenerator, middle square method, Mersenne Twister algorithm,CryptGenRandom, probability density function, or any pseudorandom numbergenerators (PRNGs), etc. In another example, the initial ID of controlmodule 302 or any IDs of any components of control module 302, e.g., theID of processor 702, may be used by control module 302 to generate theencryption key.

At 3308, host 204 may transmit a firmware update request message tocontrol module 302. It is to be appreciated that 3308 may occur before3302. In other words, in some embodiments, control module 302 may samplenoise signals to generate the encryption key in response to receivingthe firmware update request message. In some embodiments, control module302 may perform 3302 regardless of whether the firmware update requestmessage being received. For example, control module 302 mayautomatically perform 3302 the first time when control module 302 ispowered-up. In any event, at 3310, control module 302 may transmit anencryption key message to host 204. Control module 302 may retrieve theencryption key stored in persistent storage 716 and include theencryption key in the encryption key message.

At 3312, host 204 may encrypt the firmware to be updated based on thereceived encryption key. Any suitable encryption algorithms may be usedby host 204 for encryption, such as but not limited to, advancedencryption standard (AES), data encryption standard (DES), or triple DES(3DES). At 3314, host 204 may divide the firmware file into M datapackages. In this embodiment, each data package may have the same sizeand include a header and an error detection and correction code. TABLE 5below illustrates one example of the firmware data package. In TABLE 5,the header includes the flag, package size, and package number. Thepackage size does not count the header and error detection andcorrection code, but includes the package number and data. The size ofdata is the package size minus two bytes.

TABLE 5 Flag Package Size Package No. Data CRC Byte Byte Byte Byte ByteByte Byte Byte . . . Byte Byte 0 1 2 3 4 5 6 7 N − 1 N 0x42 0x4C Packagesize Package No. Data 16

At 3316, host 204 may transmit the first firmware data package tocontrol module 302. In this embodiment, control module 302 may check thefirst firmware data package based on the CRC16 code. If the CRC check ispassed, control module 302 may send a message notifying host 204 tocontinue to transmit the next firmware data package. If the CRC check isfailed, control module 302 may send a message notifying host 204 toresend the previous firmware data package. In some embodiments, thefirmware update process may be aborted if no response is received fromhost 204 within a certain period after notifying host 204 to resend theprevious firmware data package or if the CRC check has failed for acertain number of times. The same processes may be repeated until at3318, host 204 may transmit the last (e.g., Mth) firmware data packageto control module 302. That is, host 204 may transmit each of the Mfirmware data packages in sequence to control module 302. It is to beappreciated that in some embodiments, CRC check may be skipped, and host204 may continue transmitting each firmware data package without waitingfor notification from control module 302.

At 3320, after receiving all the firmware data packages, i.e., theentire firmware file, control module 302 may retrieve the encryptionkey, for example, from persistent storage 716 or any storage where theencryption key can be stored. At 3322, control module 302 may decryptthe firmware file using the retrieved encryption key. If the retrievedencryption key matches the encryption key that is used by host 204 toencrypt the firmware file, i.e., the firmware file is transmitted to thecorrect control module, then the firmware file can be decrypted (i.e.,the decryption is successful). At 3324, control module 302 may load thefirmware to complete the firmware update process. Otherwise, if thedecryption fails, for example, because the retrieved encryption key doesnot match the encryption key used for encrypting the firmware file byhost 204 or because control module 302 cannot retrieve any encryptionkey, then the firmware update process fails. In any event, at 3326,control module 302 may transmit a firmware update status message to host204 to report whether the firmware update is successful or not.

FIG. 34 is a flow chart illustrating an example of a method 3400 forupdating firmware on control module 302 in accordance with anembodiment. It will be described with reference to the above figures.However, any suitable circuit, logic, unit, or module may be employed.Method 3400 can be performed by any suitable circuit, logic, unit, ormodule that can comprise hardware (e.g., circuitry, dedicated logic,programmable logic, microcode, etc.), software (e.g., instructionsexecuting on a processing device), or a combination thereof. It is to beappreciated that not all steps may be needed to perform the disclosureprovided herein. Further, some of the steps may be performedsimultaneously, or in a different order than shown in FIG. 34, as willbe understood by a person of ordinary skill in the art.

Starting at 3402, control module 302 may obtain noise informationsampled from control module 302 itself. An embodiment of 3402 shall nowbe described in greater detail. Specifically, at 3404, control module302 may sample certain components, such as the power supply, to obtainan initial signal, for example, using ADC. At 3406, control module 346may filter the initial signal to obtain a filter signal, for example,using Kalman filtering. At 3408, control module 302 may compute a noisesignal based on the initial and filter signals, for example, usingsubtraction operation. At 3410, control module 302 may calculate a firstencryption key based on the noise information. For example, thecalculation may be performed by modulo operation on the noise signal. At3412, control module 302 may store the first encryption key inpersistent storage 716 of control module 302.

At 3414, control module 302 may determine whether a message requestingfirmware update is received from host 204. If the message is notreceived, control module 302 may continue checking until the message isreceived. At 3416, control module 302 may transmit the first encryptionkey to host 204.

At 3418, control module 302 may receive encrypted firmware from host204. The firmware may be encrypted by host 204 based on a secondencryption key. In some embodiments, the encrypted firmware may bedivided into multiple data packages that are sequentially transmitted tocontrol module 302 from host 204. The size of each data package may bethe same. After receiving the encrypted firmware, e.g., all the datapackages, at 3420 control module 302 may retrieve the first encryptionkey from persistent storage 716 of control module 302. At 3422, controlmodule 302 may decrypt the firmware based on the retrieved firstencryption key. At 3424, control module 302 may determine whether thedecryption succeeds. In this embodiment, if the first encryption keymatches the second encryption key, then the decryption succeeds. At3426, control module 302 may load the decrypted firmware to complete thefirmware update process. Otherwise, the decryption fails, and thefirmware update process fails.

FIG. 35 is a flow chart illustrating another example of a method 3500for updating firmware on control module 302 in accordance with anembodiment. It will be described with reference to the above figures.However, any suitable circuit, logic, unit, or module may be employed.Method 3500 can be performed by any suitable circuit, logic, unit, ormodule that can comprise hardware (e.g., circuitry, dedicated logic,programmable logic, microcode, etc.), software (e.g., instructionsexecuting on a processing device), or a combination thereof. It is to beappreciated that not all steps may be needed to perform the disclosureprovided herein. Further, some of the steps may be performedsimultaneously, or in a different order than shown in FIG. 35, as willbe understood by a person of ordinary skill in the art.

Starting at 3502, host 204 may transmit a message request firmwareupdate to corresponding control module 302 at which the firmware updateis to be performed. At 3504, host 204 may receive an encryption key fromcontrol module 302. The encryption key may be calculated based on noiseinformation sampled from control module 302, such as the power supply ofcontrol module 302. At 3506, host 204 may encrypt the firmware based onthe received encryption key using any suitable encryption algorithms,such as AES, DES, or 3DES. At 3508, host 204 may divide the firmwareinto multiple data packages. For example, the size of each package maybe the same. At 3510, host 204 may sequentially transmit each firmwaredata package to control module 302. In some embodiments, host 204 mayfurther receive the firmware update status (e.g., success or failure)from control module 302.

Host Applications

The functions of modular assembly systems disclosed herein (e.g.,modular assembly robotic toys) can be customized by users via hostapplications running on hosts 204, and the behaviors of the modularassembly systems can be controlled by the users at runtime via the hostapplications running on hosts 204 as well. For example, controlapplication 1214, programming application 1216, and firmware updateapplication 1218 described above with respect to FIG. 12 are examples ofthe host applications running on hosts 204. Embodiments of controlapplication 1214 and programming application 1216 shall now be describedin greater detail with respect to FIGS. 36-42.

FIG. 36 is a block diagram illustrating an example of applicationsrunning on hosts 204 in accordance with an embodiment. It is to beappreciated that applications 3602, 3604, and 3606 disclosed herein mayrun on a single host 204 or on multiple hosts 204. For the illustrativepurpose only, applications 3602, 3604, and 3606 in this embodiment willbe described as running on a single host 204. It is also to beappreciated that some applications 3602, 3604, and 3606 may beintegrated into a single application. For example, script controlenvironment 3604 may be integrated with runtime control environment 3602to form control application 1214 or may be integrated with graphicalprogramming environment 3606 to form programming application 1216. Asshown in FIG. 36, a user interface 3608 may be rendered by host 204 toserve as the interface between user 1202 and any of applications 3602,3604, and 3606. In addition, a host instruction generator 3622 may runon host 204 for generating host instructions based on user inputs to anyof applications 3602, 3604, and 3606 and providing host instructions tooperating system 504 and/or virtual machine 506 running on controlmodule 302.

In this embodiment, runtime control environment 3602 may allow user 1202to interactively control operations of the modular assembly system atruntime when the modular assembly system in on operation. Runtimecontrol environment 3602 may include a virtual handle 3610, a lightingcontroller 3612, and a gesture controller 3614. Interactions betweenuser 1202 and any functional components of runtime control environment3602 may be recorded and forwarded to a control instruction generator3624 in host instruction generator 3622 to generate correspondingcontrol instructions. The control instructions may be transmitted fromhost 204 to operating system 504 of control module 302 and convertedinto operation instructions for each corresponding assembly module 202of the modular assembly system. For example, the control instruction maybe transmitted to control module 302 using BLE technologies.

In this embodiment, virtual handle 3610 may allow user 1202 to controlmotion of the modular assembly system by interacting with virtual handle3610. In some embodiments, virtual handle 3610 may mimic the appearanceof one of assembly modules 202 of the modular assembly system. Forexample, movement module 318 may be substantially ball-shaped, andvirtual handle 3610 may mimic the ball shape of movement module 318 whenvirtual handle 3610 is rendered on the display screen of host 204. User1202 may interact with virtual handle 3160 in various manners. In oneexample, the display screen of host 204 may be a touch screen so thatuser 1202 can touch different portions of virtual handle 3160 and/or usedifferent touch gestures to control the actions of actuator modules 306,e.g., moving forward, backward, upward, and downward, turning left andright, or tilting forward and backward. In another example, host 204 maybe a mobile or portable device having inertial sensors, such asgyroscopes and accelerometers. Host 204 thus can sense motion of themobile device caused by user 1202 (e.g., capturing the angle in whichthe mobile device is tilted by user 1202), and virtual handle 3610 cancontrol the actions of actuator modules 306 by mimicking the motion orpose (e.g., tilting angles) of the mobile device. For example, user 1202may first keep the mobile device flat to set a zero angle point. Thenvirtual handle 3160 can control actuator modules 306 to move forward orbackward when the mobile device is tilted forward or backward,respectively, and control actuator modules 306 to turn left or rightwhen the mobile device is tilted left or right, respectively. It is tobe appreciated that in some embodiments, user 1202 may interact withvirtual handle 3610 in any other suitable manners, such as voicecommands, eyeball movement, or head, body, hand, and finger gestures, toname a few. It is to be appreciated that in some embodiments, virtualhandle 3610 may be presented on a display screen of an assembly module202 of the modular assembly system, such as control modules 302 oranalyzing modules 308. For example, voice command recognition or usergesture recognition may be performed, at least partially, by analyzingmodules 308.

In this embodiment, lighting controller 3612 may allow user 1202 tocontrol lighting of the modular assembly system. In this embodiment,lights may be arranged on one or more assembly modules 202, such ascontrol modules 302 and movement modules 318. User 1202 may set thelighting scheme of the modular assembly system, for example, the colorof lights, the lighting duration and interval, synchronization oflighting on different assembly modules, etc. Gesture controller 3614 mayallow user 1202 to control the modular assembly system, or one or moreassembly modules 202 thereof to present certain gestures. It is to beappreciated that additional functional components may be included inruntime control environment 3602 to facilitate user 1202 to control themodular assembly system at runtime.

In this embodiment, script control environment 3604 may allow user 1202to designate a function or behavior corresponding to the particularmodular assembly system. In this embodiment, script control environment3604 may provide a set of predefined base functions 3616-1, . . . ,3616-n to user 1202 for selection. Each predefined base function 3616may correspond to one of modular assembly systems and include a seriesof actions for each assembly module 202 of the specific modular assemblysystem. User 1202 may further modify or configure the selected basefunction 3616 to designate the desired function or behavior to beperformed by the particular modular assembly system. In this embodiment,programming instruction generator 3626 in host instruction generator3622 may generate corresponding programming instructions, e.g., Luascripts, based on the modified or configured base function 3616. Host204 may transmit the programming instructions to virtual machine 506 ofcontrol module 302 prior to the modular assembly system performs thefunction or behavior designated by user 1202. For example, theprogramming instructions may be transmitted to control module 302 usingBLE technologies. Virtual machine 506 may convert the programminginstructions into operation instructions for each assembly module 202 ofthe modular assembly system to perform the series of actions set in themodified or configured base function 3616. As described above, in someembodiments, a physical switch on control module 302 may be used tointerrupt the execution of the programming instructions by virtualmachine 506 of control module 302. For example, the programminginstructions may not be executed by control module 302 until thephysical switch is triggered.

Each base function 3616 may be predefined based on a specific modularassembly system, i.e., the particular assembly modules plugged into themodular assembly system. Base functions 3616 may include, for example,self-balancing, tracking, color recognition, obstacle avoidance, andfollowing. For example, the specific modular assembly system for theself-balancing base function may include at least control module 302with gyroscopes and movement modules 318. The self-balancing basefunction allows the modular assembly system to keep balance whilemoving. Specifically, the gyroscopes on control module 302 may detectthe titling angle of the modular assembly system at runtime, and controlmodule 302 may control movement modules 318 to maintain balance based onthe real-time tilting angle of the modular assembly system. In anotherexample, the specific modular assembly system for the tracking basefunction may include at least color recognition module 316 and movementmodules 318. The tracking base function allows the modular assemblysystem to move along a colored path. Specifically, a path with aparticular color may be drawn on the ground, and color recognitionmodule 316 may recognize the particular colored path and provide thesensor signals to control module 302. Control module 302 then maycontrol movement modules 318 to move along the colored path.

In this embodiment, graphical programming environment 3606 mayfacilitate user 1202 to input programs, e.g., statement blocks, prior tothe modular assembly system (e.g., control module 302) on operation.Graphical programming environment 3606 may include graphical statementblocks 3618 and graphical assembly modules 3620. Interactions betweenuser 1202 and any functional components of graphical programmingenvironment 3606 may be recorded and forwarded to programminginstruction generator 3626 in host instruction generator 3622 togenerate corresponding programming instructions. The programminginstructions may be transmitted by host 204 to virtual machine 506 ofcontrol module 302 and converted into operation instructions for eachcorresponding assembly module 202 of the modular assembly system. Forexample, the programming instructions may be transmitted to controlmodule 302 using USB. In some embodiments, prior to transmitting theprogramming instructions to control module 302, graphical programmingenvironment 3606 may present a preview of the operations of assemblymodules 202 of the modular assembly system in accordance with theprogramming instructions.

In this embodiment, user 1202 may select graphical statement blocks 3618by dragging-and-dropping and provide values to parameters of selectedgraphical statement blocks 3618 to build the program. In someembodiments, graphical statement blocks 3618 may be grouped intocategories, and at least some categories relate to functions of assemblymodules 202 of the modular assembly system, such as motion, lighting, orsensing. In some embodiments, parameters of some graphical statementblocks 3618 may be associated with the physical switch on control module302, such as the duration of pressing the physical switch as a conditionto trigger an event. In this embodiment, each graphical assembly module3620 may be a graphical representation corresponding to one of assemblymodules 202 of the modular assembly system and may be associated with atleast one property, such as name, icon, color, etc. In some embodiments,the icon may mimic the appearance of corresponding assembly module 202.In this embodiment, user 1202 may provide values of properties ofgraphical assembly modules 3620 to configure graphical assembly modules3620 and/or corresponding assembly modules 202. It is to be appreciatedthat additional functional components may be included in graphicalprogramming environment 3606 to facilitate user 1202 to program themodular assembly system.

FIGS. 37A-37B are screenshots of an example of a control application inaccordance with an embodiment. In FIG. 37A, the screenshot represents anexemplary GUI of virtual handle 3610 and lighting controller 3612. A GUIelement 3702 represents virtual handle 3610 for the user to real-timecontrol the movement direction (e.g., forward, backward, left, andright) of movement modules 318 of the modular assembly system. A GUIelement 3704 allows the user to adjust the movement speed of movementmodules 318. On the right side of the GUI, GUI elements 3706 and 3708represent lighting controller 3612. GUI element 3706 allows the user tocontrol lighting on control module 302, and GUI element 3708 allows theuser to control lighting on movement modules 318. In FIG. 37B, on theright side of the GUI, a GUI element 3710 represents gesture controller3614 and allows the user to select one of the three predefined gesturesthat can be presented by color recognition module 316.

FIG. 38 is a screenshot of another example of a control application inaccordance with an embodiment. In this example, the screenshotrepresents an exemplary GUI of one base function 3616 of script controlenvironment 3604. As shown in FIG. 38, a GUI element 3802 indicates thatthe selected base function 3616 is “Obstacle Avoidance.” A GUI element3804 represents the assembly modules that are needed for thecorresponding modular assembly system to perform the selected basefunction and the number of each type of assembly modules that arecurrently online. A GUI element 3806 allows the user to further modifyor configure the selected base function, for example, by simulating thebehavior of the modular assembly system.

FIG. 39 is a flow chart illustrating an example of a method 3900 forproviding host instructions to control module 302 in accordance with anembodiment. It will be described with reference to the above figures.However, any suitable circuit, logic, unit, or module may be employed.Method 3900 can be performed by any suitable circuit, logic, unit, ormodule that can comprise hardware (e.g., circuitry, dedicated logic,programmable logic, microcode, etc.), software (e.g., instructionsexecuting on a processing device), or a combination thereof. It is to beappreciated that not all steps may be needed to perform the disclosureprovided herein. Further, some of the steps may be performedsimultaneously, or in a different order than shown in FIG. 39, as willbe understood by a person of ordinary skill in the art.

Starting at 3902, host 204 may present a GUI having a first set of GUIelements and a second set of GUI elements to a user. The first set ofGUI elements may allow the user to interactively control operation ofthe modular assembly system at runtime when the modular assembly systemis on operation. The operation of the modular assembly system mayinclude, for example, motion, lighting, and gesture. In one example, thefirst set of GUI elements may represent runtime control environment3602, which includes virtual handle 3610, lighting controller 3612, andgesture controller 3614, as described above in detail. The second set ofGUI elements may allow the user to designate a function or behaviorcorresponding to the modular assembly system. For example, the secondset of GUI elements may represent script control environment 3604, whichincludes predefined base functions 3616 as described above in detail.

At 3904, host 204 may facilitate the user to select the first set of GUIelements or the second set of GUI elements. At 3906, host 204 maydetermine whether the first set of GUI elements or the second set of GUIelements is selected by the user. If the first set of GUI elements areselected, then at 3908, host 204 may dynamically generate a first set ofhost instruction, e.g., control instructions, based on the user'sinteractions with the first set of GUI elements for controlling theoperation of the modular assembly system. At 3910, host 204 may transmitthe generated first set of host instructions to control module 302 ofthe modular assembly system at runtime when the modular assembly systemis on operation. If the second set of GUI elements are selected, then at3912, host 204 may obtain a second set of host instructions, e.g.,programming instructions, based on the function or behavior designatedby the user. At 3914, host 204 may transmit the obtained second set ofhost instructions to control module 302 of the modular assembly systemprior to the modular assembly system performs the function or behaviordesignated by the user. It is to be appreciated that the user may selectboth the first and second sets of GUI elements, and host 204 cangenerate and transmit both the first and second sets of hostinstructions in parallel or in sequence.

FIGS. 40A-40B are screenshots of an example of a programming applicationin accordance with an embodiment. In FIG. 40A, the screenshot representsan exemplary GUI of graphical programming environment 3606. GUI elements4002 and 4004 represent graphical statement blocks 3618 that areorganized in categories for the user select. GUI element 4002 representsthe categories such as “Flow,” “Motion,” “Light,” “Sensor,” “Logic,”“Math,” and “Variable.” GUI element 4004 represents the availablegraphical statement blocks 3618 under the currently-selectedcategory—“Flow.” As described above, graphical statements blocks 3618may include parameters. The user can drag and drop desired graphicalstatement blocks 3618 into a GUI element 4006 to build a program. Thevalues of the parameters of the selected graphical statement blocks 3618can be inputted in GUI element 4006 as well.

For example, FIG. 41 is a screenshot of an example of a program 4100including graphical statement blocks in accordance with an embodiment.In this example, program 4100 starts with a “Start” graphical statementblock. Program 4100 then sets the values of “ballpower” parameters oftwo power modules 310 as “30” and “−30.” The next graphical statementblock of program 4100 indicates that the following graphical statementblocks are repeated. Program 4100 further includes a graphical statementblock that instructs movement modules 318 to stop without brake andgraphical statement blocks that instruct all assembly modules to flashlights in the green color. In this example, program 4100 can achieve thefollowing function or behavior: (1) the modular assembly robotic toymoves forward for one second with output power of 30 watt, while all theassembly modules flash the green lights; (2) after one second of idletime, switching the power output of the two movement modules to causethe modular assembly robotic toy to move backward for one second, whileall the assembly modules flash the green lights; and (3) repeating (1)and (2) until the execution of program 4100 is interrupted.

Returning back to FIGS. 40A-40B, a GUI element 4008 represents graphicalassembly modules 3620 of graphical programming environment 3606. In thisexample, GUI element 4008 shows the icon 4010 of the modular assemblyrobotic toy, the name 4012 of the modular assembly robotic toy, andicons, names, and numbers of each assembly module 202 of the modularassembly robotic toy. For example, a GUI element 4014 shows an icon ofcontrol module 302, a GUI element 4016 shows a field to input the nameof control module 302, and a GUI element 4018 shows a field to selectthe color for control module 302. A GUI element 4018 provides thesimilar presentation or selection for movement module 318. That is, GUIelement 4008 allows the user to provide values to properties (e.g.,icon, name, or color) of each assembly module 202 of the modularassembly robotic toy or properties of the modular assembly roboticitself. In this embodiment, the icon of the modular assembly robotic toyand the icons of each assembly module 202 mimic the appearances ofcorresponding modular assembly robotic toy and assembly modules 202,respectively.

FIG. 42 is a flow chart illustrating another example of a method 4200for providing host instructions to control module 302 in accordance withan embodiment. It will be described with reference to the above figures.However, any suitable circuit, logic, unit, or module may be employed.Method 4200 can be performed by any suitable circuit, logic, unit, ormodule that can comprise hardware (e.g., circuitry, dedicated logic,programmable logic, microcode, etc.), software (e.g., instructionsexecuting on a processing device), or a combination thereof. It is to beappreciated that not all steps may be needed to perform the disclosureprovided herein. Further, some of the steps may be performedsimultaneously, or in a different order than shown in FIG. 42, as willbe understood by a person of ordinary skill in the art.

Starting at 4202, host 204 may present a GUI, e.g., graphicalprogramming environment 3606, including a set of first graphicalrepresentations and a set of second graphical representations. Eachfirst graphical representation, e.g., graphical statement block 3618,may correspond to a statement block including at least one parameter.Each second graphical representation, e.g., graphical assembly module3620, may correspond to one assembly module 202 associated with at leastone property, e.g., icon, name, or color. The set of first graphicalrepresentations may be grouped into categories, some of which relate tofunctions of assembly modules 202, such as motion, lighting, or sensing.

At 4204, host 204 may facilitate the user to select at least one of thefirst graphical representations and provide values of the parameters foreach selected graphical representation. The selection may be made bydragging-and-dropping the first graphical representations. In otherwords, the user may build the program in a visual and graphical manner.At 4206, host 204 may facilitate the user to provide values to theproperties of the second graphical representations. That is, the usermay customize the properties of assembly modules 202. It is to beappreciated that host 204 may perform 4204 and 4206 independently or inparallel. In some embodiments, the user may not be promoted to providevalues to the properties of the second graphical representations.

At 4208, host 204 may generate a set of host instructions, e.g.,programming instructions, based on the selected first and secondgraphical representations and values provided thereof. The hostinstructions may be, for example, source codes or intermediate codes. Itis to be appreciated that in some embodiments, the host instructions maybe generated based on the selected first graphical representation andvalues provided thereof, i.e., the program, but not based on theselected second graphical representations and values provided thereof.In other words, in some embodiments, the customization of properties ofassembly modules 202 via the second graphical representations may beused by host 204, but not by control module 302. At 4210, host 204 maytransmit the generated set of host instructions to control module 302for controlling the operations of assembly modules 202 of the modularassembly system. In this embodiment, the transmission may occur prior tocontrol module 302 is on operation. In some embodiments, host 204 maypresent a preview of the operations of assembly modules 202 inaccordance with the set of host instructions prior to the transmission.

Various embodiments can be implemented, for example, using one or morecomputer systems, such as computer system 4300 shown in FIG. 43. One ormore computer system 4300 can be used, for example, to implement method2700 of FIG. 27, method 2800 of FIG. 28, method 3100 of FIG. 31, method3200 of FIG. 32, method 3400 of FIG. 34, method 3500 of FIG. 35, method3900 of FIG. 39, and method 4200 of FIG. 42, as well as event diagramsof FIGS. 26, 29, 30, and 33. For example, computer system 4300 canupdate firmware on and/or provide host instructions to a control moduleof a modular assembly system, according to various embodiments. Computersystem 4300 can be any computer capable of performing the functionsdescribed herein.

Computer system 4300 can be any well-known computer capable ofperforming the functions described herein. Computer system 4300 includesone or more processors (also called central processing units, or CPUs),such as a processor 4304. Processor 4304 is connected to a communicationinfrastructure or bus 4306. One or more processors 4304 may each be agraphics processing unit (GPU). In an embodiment, a GPU is a processorthat is a specialized electronic circuit designed to processmathematically intensive applications. The GPU may have a parallelstructure that is efficient for parallel processing of large blocks ofdata, such as mathematically intensive data common to computer graphicsapplications, images, videos, etc.

Computer system 4300 also includes user input/output device(s) 4303,such as monitors, keyboards, pointing devices, etc., that communicatewith communication infrastructure 4306 through user input/outputinterface(s) 4302.

Computer system 4300 also includes a main or primary memory 4308, suchas random access memory (RAM). Main memory 4308 may include one or morelevels of cache. Main memory 4308 has stored therein control logic(i.e., computer software) and/or data. Computer system 4300 may alsoinclude one or more secondary storage devices or memory 4310. Secondarymemory 4310 may include, for example, a hard disk drive 4312 and/or aremovable storage device or drive 4314. Removable storage drive 4314 maybe a floppy disk drive, a magnetic tape drive, a compact disk drive, anoptical storage device, tape backup device, and/or any other storagedevice/drive. Removable storage drive 4314 may interact with a removablestorage unit 4318. Removable storage unit 4318 includes a computerusable or readable storage device having stored thereon computersoftware (control logic) and/or data. Removable storage unit 4318 may bea floppy disk, magnetic tape, compact disk, DVD, optical storage disk,and/any other computer data storage device. Removable storage drive 4314reads from and/or writes to removable storage unit 4318 in a well-knownmanner.

According to an exemplary embodiment, secondary memory 4310 may includeother means, instrumentalities or other approaches for allowing computerprograms and/or other instructions and/or data to be accessed bycomputer system 4300. Such means, instrumentalities or other approachesmay include, for example, a removable storage unit 4322 and an interface4320. Examples of the removable storage unit 4322 and the interface 4320may include a program cartridge and cartridge interface (such as thatfound in video game devices), a removable memory chip (such as an EPROMor PROM) and associated socket, a memory stick and USB port, a memorycard and associated memory card slot, and/or any other removable storageunit and associated interface.

Computer system 4300 may further include a communication or networkinterface 4324. Communication interface 4324 enables computer system4300 to communicate and interact with any combination of remote devices,remote networks, remote entities, etc. (individually and collectivelyreferenced by reference number 4328). For example, communicationinterface 4324 may allow computer system 4300 to communicate with remotedevices 4328 over communications path 4326, which may be wired and/orwireless, and which may include any combination of LANs, WANs, theInternet, etc. Control logic and/or data may be transmitted to and fromcomputer system 4300 via communication path 4326.

In an embodiment, a tangible apparatus or article of manufacturecomprising a tangible computer useable or readable medium having controllogic (software) stored thereon is also referred to herein as a computerprogram product or program storage device. This includes, but is notlimited to, computer system 4300, main memory 4308, secondary memory4310, and removable storage units 4318 and 4322, as well as tangiblearticles of manufacture embodying any combination of the foregoing. Suchcontrol logic, when executed by one or more data processing devices(such as computer system 4300), causes such data processing devices tooperate as described herein.

Based on the teachings contained in this disclosure, it will be apparentto persons skilled in the relevant art(s) how to make and useembodiments of the present disclosure using data processing devices,computer systems and/or computer architectures other than that shown inFIG. 43. In particular, embodiments may operate with software, hardware,and/or operating system implementations other than those describedherein.

It is to be appreciated that the Detailed Description section, and notthe Summary and Abstract sections (if any), is intended to be used tointerpret the claims. The Summary and Abstract sections (if any) may setforth one or more but not all exemplary embodiments of the presentdisclosure as contemplated by the inventor(s), and thus, are notintended to limit the present disclosure or the appended claims in anyway.

While the present disclosure has been described herein with reference toexemplary embodiments for exemplary fields and applications, it shouldbe understood that the present disclosure is not limited thereto. Otherembodiments and modifications thereto are possible, and are within thescope and spirit of the present disclosure. For example, and withoutlimiting the generality of this paragraph, embodiments are not limitedto the software, hardware, firmware, and/or entities illustrated in thefigures and/or described herein. Further, embodiments (whether or notexplicitly described herein) have significant utility to fields andapplications beyond the examples described herein.

Embodiments have been described herein with the aid of functionalbuilding blocks illustrating the implementation of specified functionsand relationships thereof. The boundaries of these functional buildingblocks have been arbitrarily defined herein for the convenience of thedescription. Alternate boundaries can be defined as long as thespecified functions and relationships (or equivalents thereof) areappropriately performed. Also, alternative embodiments may performfunctional blocks, steps, operations, methods, etc. using orderingsdifferent than those described herein.

The breadth and scope of the present disclosure should not be limited byany of the above-described exemplary embodiments, but should be definedonly in accordance with the following claims and their equivalents.

What is claimed is:
 1. A modular assembly toy system, comprising: aplurality of assembly modules, each assembly module comprising at leastone connection interface; and one or more connectors, each connectorconfigured to mechanically and electrically connect two of the pluralityof assembly modules via the respective connection interfaces of the twoassembly modules, wherein the plurality of assembly modules include atleast: a control module comprising: a control module communication unitconfigured to obtain a set of host instructions from one or more hosts,and a control module processor configured to generate a set of operationinstructions for control each assembly module based on at least the setof host instructions; and an analyzing module comprising: an analyzingmodule sensor configured to obtain a sensor signal, an analyzing moduleprocessor configured to analyze the sensor signal to generate a firstanalyzing result, and an analyzing module communication unit configuredto transmit the sensor signal or the first analyzing result to at leastone of the one or more hosts.
 2. The system of claim 1, wherein eachconnector comprises two open ends adapted to fitting into the connectioninterfaces of the two assembly modules, respectively.
 3. The system ofclaim 1, each assembly module is substantially ball-shaped.
 4. Thesystem of claim 1, further comprising: a bus formed upon the pluralityof assembly modules being mechanically and electrically connected oneanother via the one or more connectors, wherein each assembly module iselectrically connected to the bus in parallel.
 5. The system of claim 4,wherein the bus is configured to transmit a power signal and a datasignal between the plurality of assembly modules.
 6. The system of claim1, further comprising the one or more hosts, wherein the one or morehosts comprise: a control application configured to receive a firstinput from a user and generate, based on at least the first input, atleast some of the set of host instructions at runtime when the controlmodule is on operation; and a programming application configured toreceive a second input from a user and generate, based on at least thesecond input, at least some of the set of host instructions prior to thecontrol module is on operation.
 7. The system of claim 6, wherein the atleast one of the one or more hosts is configured to transmit the sensorsignal or the first analyzing result to a server via the Internet; andthe server comprises an analyzing application configured to analyze thesensor signal or the first analyzing result to generate a secondanalyzing result.
 8. The system of claim 7, wherein the second analyzingresult is generated using an artificial intelligence approach.
 9. Thesystem of claim 7, wherein the at least one of the one or more hosts isfurther configured to: determine that the host is not operativelycoupled to the server via the Internet, and in response to determinethat the host is not operatively coupled to the server via the Internet,invoke another analyzing application residing on the host to analyze thesensor signal or the first analyzing result to generate a thirdanalyzing result.
 10. The system of claim 1, wherein the analyzingmodule communication unit is further configured to transmit the sensorsignal or the first analyzing result to the at least one of the one ormore hosts via wireless communication.
 11. A toy assembly module,comprising: at least one connection interface, each connection interfaceconfigured to mechanically and electrically connect to a connector andreceive at least a power signal via the connector; a sensor configuredto obtain a sensor signal; a processor, operatively coupled to thesensor and the at least one connection interface, configured to analyzethe sensor signal to generate an analyzing result; and a communicationunit, operatively coupled to the processor, configured to transmit thesensor signal or the analyzing result to a host, wherein at least one ofthe connection interface and the communication unit is configured toreceive, from the host, a set of operation instructions generated basedon at least the sensor signal or the analyzing result.
 12. The assemblymodule of claim 11, wherein communication unit is further configured totransmit the sensor signal or the analyzing result to the host viawireless communication.
 13. The assembly module of claim 11, wherein thesensor includes a microphone configured to obtain a voice signal; andthe processor is configured to analyze the voice signal to generate avoice recognition result.
 14. The assembly module of claim 11, whereinthe sensor includes a camera configured to obtain an image signal; andthe processor is configured to analyze the image signal to generate animage recognition result.
 15. The assembly module of claim 11, whereinthe set of operation instructions are generated based on anotheranalyzing result, the another analyzing result generated based on thesensor signal or the analyzing result using an artificial intelligenceapproach by a server that is operatively coupled to the host via theInternet.
 16. A modular assembly toy system, comprising: a plurality ofassembly modules, each assembly module being substantially ball-shaped,at least one of the assembly modules comprising at least one connectioninterface; and one or more connectors, each connector configured tomechanically and electrically connect two of the plurality of assemblymodules via the connection interface of one of the two assembly modules,wherein the plurality of assembly modules include at least: a controlmodule comprising: a communication unit configured to obtain a set ofhost instructions from one or more hosts, and a processor configured togenerate a set of operation instructions for each assembly module basedon at least the set of host instructions; and an actuation modulecomprising: a set of propellers, and a motor configured to drive the setof propellers based on at least the set of operation instructions forthe actuation module generated by the processor.
 17. The system of claim16, wherein the control module further comprises a sensor configured toobtain a sensor signal indicative of attitude of the system at runtimewhen the actuation module is on operation; and the processor isconfigured to generate the set of operation instructions for theactuation module based on at least the sensor signal.
 18. The system ofclaim 16, further comprising: a bus formed upon the plurality ofassembly modules being mechanically and electrically connected oneanother via the one or more connectors, wherein each assembly module iselectrically connected to the bus in parallel.
 19. A modular assemblytoy system, comprising: a plurality of assembly modules, each assemblymodule comprising at least one connection interface and beingsubstantially ball-shaped; and one or more connectors, each connectorconfigured to mechanically and electrically connect two of the pluralityof assembly modules via the respective connection interfaces of the twoassembly modules, each connector comprising two open ends adapted tofitting into the connection interfaces of the two assembly modules,respectively, wherein the plurality of assembly modules include at leasta control module comprising: a communication unit configured to obtain aset of host instructions from one or more hosts, and a processorconfigured to generate a set of operation instructions for each assemblymodule based on at least the set of host instructions.
 20. The system ofclaim 19, wherein the control module further comprises: a physicalswitch configured to in response to an input from a user, interrupt andresume the obtaining of at least some of the set of host instructions orthe generating of the set of operation instructions.
 21. The system ofclaim 19, wherein the plurality of assembly modules further include apower module comprising: a power supply configured to generate a powersignal for the plurality of assembly modules.
 22. The system of claim19, wherein the plurality of assembly modules further include a colorrecognition module comprising: a light sensor configured to obtain alight signal from an object; and a processor configured to determine acolor of the object based on at least the light signal.
 23. The systemof claim 19, wherein the plurality of assembly modules further include amovement module that is substantially ball-shaped, the movement modulecomprising: a motor configured to rotate the entirety of the movementmodule.
 24. The system of claim 19, wherein the plurality of assemblymodules further include an infrared sensor module comprising: aninfrared transmitter configured to emit a first infrared beam to anobject; and an infrared receiver configured to obtain a second infraredbeam reflected from the object.
 25. The system of claim 19, furthercomprising: a bus formed upon the plurality of assembly modules beingmechanically and electrically connected one another via the one or moreconnectors, wherein each assembly module is electrically connected tothe bus in parallel.
 26. The system of claim 25, wherein the bus isconfigured to transmit a power signal and a data signal between theplurality of assembly modules.
 27. The system of claim 19, furthercomprising the one or more hosts, wherein at least one of the one ormore hosts is configured to: encrypt firmware to be updated on thecontrol module; and transmit the encrypted firmware to the controlmodule.
 28. The system of claim 19, further comprising the one or morehosts, wherein the one or more hosts comprise: a control applicationconfigured to receive a first input from a user and generate, based onat least the first input, at least some of the set of host instructionsat runtime when the control module is on operation; and a programmingapplication configured to receive a second input from a user andgenerate, based on at least the second input, at least some of the setof host instructions prior to the control module is on operation. 29.The system of claim 28, wherein the first input includes at least oneof: a command received from a graphical user interface rendered by oneof the one or more hosts; a motion or gesture detected by a sensor onone of the one or more hosts; and a voice detected by a microphone onone of the one or more hosts.
 30. The system of claim 19, furthercomprising: the one or more hosts, wherein at least one of the one ormore hosts is configured to: communicate with the communication unit viawireless communication; and communicate with a server via the Internet;and the server configured to: receive a sensor signal or a firstanalyzing result from the host; analyze the sensor signal or the firstanalyzing result using an artificial intelligence approach to generate asecond analyzing result; and transmit the second analyzing result to thehost.